如何使用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] 
+0

你好,先生。如果你无法给出答案,请不要给予否定的意见。你不知道这个话题有多重要。如果你不明白的问题就忽略它。 – Runali

从外观上来看,我觉得你的后台总是返回一个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; 
     }); 
} 

需要注意的是,如果这个工程,你指望它,这意味着支持有执行不力。如果您创建了支持,那么我建议您更改它,否则请与任何开发者联系。

+0

即使它是我的成功函数 – Runali

+0

请问你能提供任何例子什么是后端API的格式为成功和错误 – Runali

+0

respoces你可以在我的例子中的第二个map函数内部做一个console.log(响应),并让我知道输出? –