Я использую Angular Http
для публикации в своем API, когда статус ответа равен 200, он анализирует его правильно и выдает только мой ответ, как и ожидалось, я обрабатываю это с помощью первого .then()
в обещании, нокогда мой API имеет ошибку, я выбрасываю его со статусом 400 и пытаюсь обработать его через блок .catch()
.
Проблема, с которой я сталкиваюсь, состоит в том, что .catch()
имеет не только мойсырая ошибка JSON из моего API, это просто не определено.Мой ответ об ошибке из моего API выглядит примерно так:
{
"status": 400,
"message": "Bad request",
"errors": [
{
"code": "IN_USE",
"message": "Email is in use",
"field": "email"
}
],
"data": []
}
Я гарантировал, что отправляю заголовки application/json
с ответами 200 и 400, поэтому я не уверен, почему мой код машинописи не будетразбор json на .catch()
Мой Typescript состоит из двух файлов api
и user
, пользователь просто расширяет API для использования созданного мной метода post()
:
api.ts
/**
* POST to the API
* @param path Where to go
* @param params What to send
*/
public post(path, params): Promise<any> {
return this.http
.post(this.apiUrl + path, params)
.toPromise()
.then(r => r.json());
}
user.ts
/**
* Registers a user and then logs them in via token
* @param name Users name
* @param email Users email
* @param password Users password
*/
register(name: string, email: string, password: string) {
this.post('/register', {
access_token: this.accessToken,
name: name,
email: email,
password: password
})
.then(r => {
// This logs the json just fine
console.log(r);
})
.catch(r => {
// This is undefined
console.log(r);
});
}