Angular2从错误中提取json
我正在编写一段Angular2代码,它与服务器交互,服务器返回带有http错误代码(如404或401)的json。 我找不到从错误响应中读取json的方法。 我无法使用.map(),因为没有关于正常响应的数据Angular2从错误中提取json,angular,typescript,Angular,Typescript,我正在编写一段Angular2代码,它与服务器交互,服务器返回带有http错误代码(如404或401)的json。 我找不到从错误响应中读取json的方法。 我无法使用.map(),因为没有关于正常响应的数据 return new Promise((resolve, reject: Response) => { this.http.request(new Request(requestoptions)) .subscribe( data
return new Promise((resolve, reject: Response) => {
this.http.request(new Request(requestoptions))
.subscribe(
data => {resolve()},
error => { error.json() } //<-- No json()
)
};
返回新承诺((解决、拒绝:响应)=>{
this.http.request(新请求(requestoptions))
.订阅(
数据=>{resolve()},
error=>{error.json()}/我通过尝试只解析包含响应的http代码来解决问题。
此示例代码可以帮助其他人:
return new Promise((resolve, reject) => {
this.httpProvider.login(url, credentials)
.map(res => {
//avoid parsing the response from the server for some requests since it's not a valid json
if (res.status >= 400 && res.status < 500) {
return res.json();
}
else return res;
})
.subscribe(
data => {
},
error => {
switch (error.status) {
case 400:
case 401:
let erromsg: string = this.parseServerError(error);
reject(erromsg);
break;
case 404:
case 500:
reject("Server error");
break;
default:
reject("Network Error");
}
}
);
});
parseServerError(error): string {
try {
let message = error.json().message[0].description;
return message;
} catch (e) {
return "Undefined error";
}
}
返回新承诺((解决、拒绝)=>{
this.httpProvider.login(url、凭据)
.map(res=>{
//避免解析服务器对某些请求的响应,因为它不是有效的json
如果(分辨率状态>=400和分辨率状态<500){
返回res.json();
}
否则返回res;
})
.订阅(
数据=>{
},
错误=>{
开关(错误状态){
案例400:
案例401:
让erromg:string=this.parseServerError(错误);
拒绝(MSG);
打破
案例404:
案例500:
拒绝(“服务器错误”);
打破
违约:
拒绝(“网络错误”);
}
}
);
});
parseServerError(错误):字符串{
试一试{
let message=error.json().message[0]。说明;
返回消息;
}捕获(e){
返回“未定义错误”;
}
}
检查Http调用时如何处理错误。try error=>console.log(error),错误对象响应可能不是json对象。api发送代码是什么样子的?错误代码包含json对象(我在浏览器的Http响应中看到了这一点)@ApriOri我也面临着同样的问题:您找到解决方法了吗?