加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular HttpClient修改服务中的响应

发布时间:2020-12-17 06:56:58 所属栏目:安全 来源:网络整理
导读:我正在升级到Angular到版本5,之前我正在使用@ angular / http,现在我需要更新到@ angular / common / http并使用 HttpClient 我已经在服务中(而不是在组件中)发出http请求,这使得它们易于重用 这就是我已经拥有的(来自已弃用的http) return this.http.get(ur
我正在升级到Angular到版本5,之前我正在使用@ angular / http,现在我需要更新到@ angular / common / http并使用 HttpClient

我已经在服务中(而不是在组件中)发出http请求,这使得它们易于重用

这就是我已经拥有的(来自已弃用的http)

return this.http.get(url,{headers: this.headers}).map(
      (response: Response) => {
        const data = response.json();
        // Does something on data.data

        // return the modified data:
        return data.data;
      }
    ).catch(
      (error: Response) => {
        return Observable.throw(error);
      }
    );

现在从我从新的HttpClient中学到的东西,就像我无法修改响应并将其提供给订阅它的组件方法.

我应该如何修改对HTTP请求的响应并在从Observable返回之前轻松访问它?

我只想要同样的能力修改我从API获得的响应…就像添加一些项目,或者在重新调整它之前做一些更多的东西

解决方法

这一切都取决于RxJ的版本. Angular 6附带RxJs 6 – 这意味着map()/ catch()方法不再有效.

相反,您必须使用pipe map()/ catchError(),如下所示:

在Angular 6 / RxJs 6之前 – 使用经典的Http:

return this.http.get(url,{headers: this.headers}).map(
  (response: Response) => {
    const data : SomeType = response.json() as SomeType;
    // Does something on data.data

    // return the modified data:
    return data.data; // assuming SomeType has a data properties. Following OP post
  }
).catch(
  (error: Response) => {
    return Observable.throw(error);
  }
);

应改为:

在Angular 6 / RxJs 6之后 – HttpClient迁移:

return this.http.get<SomeType>(url,{headers: this.headers})
  .pipe(
     map( response => {  // NOTE: response is of type SomeType
         // Does something on response.data
         // modify the response.data as you see fit.

         // return the modified data:
         return response; // kind of useless
     }),catchError( error => {
         return Observable.throw(error);
     })
  ); // end of pipe

在管道中,map()将获取响应对象(已经从Json解析),如果http失败,catchError()将获取第一个错误.

另外,请注意您的Headers也需要是HttpHeaders对象.

读取RxJs 6中的pipe,map和catchError

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读