如何使用angular2处理状态码?
问题描述:
我是新来的角2,并试图学习它。我正在一个网站上的响应来自后端API与两种情况。如何使用angular2处理状态码?
1 - 成功响应 - 200 - 状态码
2 - 错误响应 - 400 - 状态码
下面是我是从后端获得的响应。
1)。
{"message":{
"message":"Permission already exist.",
"statusCode":400
}}
2)。
{
"message":{
"message":"Record successfully inserted ",
"statusCode":200
}
}
但是,当我得到的响应与400状态代码的错误,它在我的组件调用成功函数。低于成功和错误消息的总代码。 如果我的下面的响应格式是正确的,那么错误函数中不会调用错误的错误是什么。
Service.ts
create(data): Observable<any> {
return this.http.post(this.config.STORE_KEY + '/public/api/role/create/' + this.userDetails.roleid , data)
.map((response: Response) => response.json())
// ...errors if any
.catch((error: any) => {
if (error.status <= 400 || error.status ===500) {
return Observable.throw(new Error(error.status));
}
});
}
component.ts
this.roleService.createRole(requestFormat).subscribe(suc => this.roleSuccess(suc),
err => this.roleEroor(err));
roleSuccess(suc) {
console.log('sucess')
}
roleEroor(error) {
console.log('error')
}[![enter image description here][1]][1]
答
从外观上来看,我觉得你的后台总是返回一个HTTP 200(OK)响应,它只是在响应主体中包含一个“statusCode”属性,根据具体情况使用不同的代码。
这绝对是一个不好的做法,因为在错误的情况下应该返回一个HTTP 400响应,而不是一个以其他方式传达错误的方式。 要检查,如果我是正确的,无论是检查HTTP响应从备份,或者尝试改变你的代码如下:
create(data): Observable<any> {
return this.http.post(this.config.STORE_KEY + '/public/api/role/create/' + this.userDetails.roleid , data)
.map((response: Response) => response.json())
.map((response: any) => {
if (response.message.statusCode >= 300) {
return Observable.throw(new Error(response.message.statusCode));
}
return response;
});
}
需要注意的是,如果这个工程,你指望它,这意味着支持有执行不力。如果您创建了支持,那么我建议您更改它,否则请与任何开发者联系。
你好,先生。如果你无法给出答案,请不要给予否定的意见。你不知道这个话题有多重要。如果你不明白的问题就忽略它。 – Runali