我有一个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错误请求,但也会有一个JSON正文:
{
Status: "Error",
Body : "Something happened"
}
如何在错误处理中访问它?
答案 0 :(得分:0)
您可以通过这种方式(已通过角度6测试)
首先调用其他类中的api,即(api帮助程序服务)
+
在上述方法中,请勿在http post方法中添加MyApiCall(data:any) {
return this.http.post('Your api url', data);
}
或.map
现在,从要与API进行交互的组件类中调用此方法
.subscribe
获取成功代码,
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
}
});
}
}
^^这将获得对您的http响应(状态,代码,httpurl,其他api信息)
let httpresponse = data;
^^这将为您获取由api创建并发送的数据(实际业务响应)
相同是有错误的逻辑
let response = data.json();
^^^第一行让您获得基本的http响应 ^^^第二行为您提供在api(用户自定义正文)中创建的错误消息