Angular2 HTTP 模块
在 Angular4 之前的 Angular2 中,HTTP API 方法的传参数形式如下:
http.get(url: string, options?: RequestOptionsArgs): Observable<Response>
http.post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>
- body 表示传递到服务器端的数据信息
- options 表示头部验证信息。
两个方法都返回一个可观察对象 Observable,我们可以通过 subscribe 方法得到里面的值并作后继处理。
this.http.post(url: string, body: any, options?: RequestOptionsArgs).subscribe(function (data) {
console.log(data)
})
RxJS 库
我们的服务可以返回 HTTP 响应对象 Response。但这可不是一个好主意! 数据服务的重点在于,对消费者隐藏与服务器交互的细节,我们最关心的还是获取到的返回数据信息,这时候我们就可以利用RxJS库来对事件流进行一些额外的处理。
RxJS(“Reactive Extensions” 的缩写)是一个被 Angular 认可的第三方库,它实现了异步可观察对象 (asynchronous observable) 模式。RxJS 库中包含很多对事件流进行处理的方法,例如map,distinctUntilChanged 等操作符。
针对返回数据是json格式的响应对象,可以把 Response 解析成 JavaScript 对象——只要调一下 response.json() 就可以了,这时候我们就可以利用map操作符来进行处理,例如,我们将上面的方法升级下
this.http.post(url: string, body: any, options?: RequestOptionsArgs).map((rsp: Response)=>{
return rsp.json()
}).s