Угловая информация об ошибке httpclient 6
У меня есть приложение Angular 6, и когда я делаю запрос http:
this.myService.login(this.form.email.value, this.form.password.value)
.pipe(first())
.subscribe(
data =>
{
//do something on success
},
error =>
{
//here the response `error` if I use console.log(error)
//shows just Bad request if my API returns 404.
//How can I access other properties of the error, like
//the body?
}
);
Как я могу получить доступ к другим свойствам ошибки, если HTTP-вызов возвращает ошибку?
В случае ошибки APi вернет 404 Bad Request, но будет также тело JSON:
{
Status: "Error",
Body : "Something happened"
}
Как я могу получить доступ к этому в моей обработке ошибок?
0 ответов
Вы можете сделать это таким образом (ПРОВЕРЕНО с угловой 6)
сначала вызовите API в другом классе, т. е. (вспомогательный сервис API)
MyApiCall(data:any) {
return this.http.post('Your api url', data);
}
в вышеуказанном методе не добавляйте .map
или же .subscribe
к методу http post
ТЕПЕРЬ, вызовите этот метод из класса вашего компонента, из которого вы собираетесь взаимодействовать с API
formSubmit() {
// your logic
this.apiservice.MyApiCall(apivalues)
.subscribe(
data => {
let httpresponse = data;
let response = data.json();
if (httpresponse.status == 200) {
// logic when success
}
else {
// else
}
}
}, err => {
let httpresponse = err;
let response = err.json();
if (httpresponse.status == 0) {
//if api is dead or couldn't reach
}
else {
//for other request , 401 404 etc
}
});
}
}
чтобы получить коды успеха,
let httpresponse = data;
^^ это позволит вам получить ответ http (статус, код, httpurl, другую информацию API)
let response = data.json();
^^ это даст вам данные, созданные и отправленные API (фактический бизнес-ответ)
такая же логика с ошибкой
let httpresponse = err;
let response = err.json();
^^^ 1-я строка дает вам базовый http ответ ^^^ 2-я строка дает вам сообщение об ошибке, созданное в API (пользовательское тело)