Я работал над учебником по Tour of Heroes, работает отлично.Угловой 2 + web api
Я сделал веб-api с C# в качестве небольшого backend для дальнейшего тестирования. Когда я пытаюсь присоединиться к указанному серверу, угловая возвращает ошибку 404, которая не найдена, даже если следующая вкладка находится на той же самой дороге.
Это ошибка:
An error occurred Object { _body: Object, status: 404, ok: false, statusText: "Not Found", headers: Object, type: null, url: "http://localhost:58225/api/Character" }
Я попытался Войти в ответ на вызове, я возвращаю «[объект Object]», но я предполагаю, что это сообщение об ошибке сами.
@Injectable()
export class CharacterService{
private charactersUrl = 'http://localhost:58225/api/Character';
constructor(private http:Http){}
getCharacters(): Promise<Character[]>{
alert("Getting Characters");
var my_data = this.http.get(this.charactersUrl)
.toPromise()
.then(response => response.json().data)
console.log("Resultat de l'appel = "+my_data);
return this.http.get(this.charactersUrl)
.toPromise()
.then((response => response.json().data as Character[]))
.catch(this.handleError);
}
Как вы можете видеть, здесь нет ничего оригинального.
/api/Character возвращает IEnumerable, который содержит список моих символов.
public IEnumerable<string> GetAll()
{
List<Character> myCharacs = repo.Get().ToList();
List<String> myJsonCharacs = new List<string>();
foreach (var charac in myCharacs)
{
var cur = jsonConverter.Serialize(charac);
myJsonCharacs.Add(cur);
}
return myJsonCharacs;
}
Я действительно не знаю, как я должен проверять дальше? Я читаю на обещаниях и наблюдаемым, чтобы увидеть, если я что-то пропустил, но это самый простой пример, который я мог думать:/
Edit:
Я изменил отклик API для JSON, следуя этим : How do I get ASP.NET Web API to return JSON instead of XML using Chrome?.
API-интерфейс теперь возвращает это когда я просматриваю непосредственно к нему:
["{\"characterName\":\"Azazel\",\"playerName\":\"Mulhouse\",\"game\":{\"name\":\"Call of Cthulhu\",\"BaseAttributes\":[{\"max\":18,\"value\":12,\"name\":\"appearance\"},{\"max\":18,\"value\":21,\"name\":\"constitution\"},{\"max\":18,\"value\":19,\"name\":\"strength\"},{\"max\":18,\"value\":17,\"name\":\"dexterity\"},{\"max\":18,\"value\":15,\"name\":\"power\"},{\"max\":18,\"value\":13,\"name\":\"size\"},{\"max\":18,\"value\":13,\"name\":\"intelligence\"},{\"max\":24,\"value\":12,\"name\":\"education\"}],.....
Сделано никакой разницы. (Это образец ответа, это на самом деле путь дольше)
Кроме того, поскольку ответ является 404 на пути, я подозреваю, что проблема не связана с форматом ответа, а скорее с конфигурацией углов. Как я могу это проверить?
EDIT: Может ли разница между структурой моих объектов вызвать эту ошибку 404? Если мой json-персонаж, приходящий с сервера, имеет больше полей, чем json-символ, определенный в angular2, что происходит?
Спасибо
Что происходит, когда вы переходите с браузером прямо к [http: // localhost: 58225/api/Character] (http: // localhost: 58225/api/Character) – PierreDuc
Может быть, возможно, response.json() 'вместо' response.json(). data' ?? – Alex
Прежде всего, настройте свой C# web-api, чтобы вернуть JSON! – mxii