Vik*_*ash 5 http observable angular
这是关于处理角度2中的服务器响应
据我所知,
1.服务器响应代码200,201等将成功响应
2.而服务器响应400,401,500等将做出错误响应
3.如果响应成功,那么它将转到地图功能,从那里我们可以返回数据或修改它.4.如果响应是错误的,那么它将转到catch函数,从那里我们将返回observable或抛出observable.
我的问题是服务器是否返回错误响应代码以及错误数据,然后是如何捕获该数据.
即假设我从服务器
成功响应
状态发送以下数据:200
msg:"已成功登录"
错误响应
状态:400
msg:"用户ID和密码错误"
在这里我能够获取或处理成功数据而不是错误数据,因为在catch函数中,只有错误对象被传递,而错误对象只包含来自服务器的响应代码,而不是响应数据
return this.http.get('/login')
.map( (res: Response) => res.json().data )
.catch( (error: any) => {
return Observable.throw( new Error("error occured"+error.status));
})
Run Code Online (Sandbox Code Playgroud)
更新:
不要将 return 放在 map 和 catch 函数中。
下面是更新的代码
return this.http.get('/login')
.map( ( successRes: Response) => {
res.json().data
)}
.catch( ( errorRes: Response ) => {
Observable.throw( errorRes.json().data );
})
Run Code Online (Sandbox Code Playgroud)
原来的:
实际上解决方案非常简单,响应数据本身附加到第一个参数,它就像成功响应情况下的正常响应一样。
只需要向响应错误对象添加 json() 调用即可将 json 转换为 js 对象,如下所示。
return this.http.get('/login')
.map( ( successRes: Response) => {
return res.json().data
)}
.catch( ( errorRes: Response ) => {
return Observable.throw( errorRes.json().data );
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9298 次 |
| 最近记录: |