http.get()。pipe()-无法从服务器获取实际的响应对象以进行日志记录

尼辛·库玛·比利亚

用例-向服务器发出http get调用。记录来自服务器的实际响应。转换响应对象(将纪元日期字段转换为javascript日期)。然后返回转换后的对象。

代码段-

/** GET users from the server */
  getUsers(): Observable<IUser[]> {
    this.logger.log(`GET on ${this.baseUrl}`);
    return this.http.get<IUser[]>(this.baseUrl).pipe(
      tap(users => this.logger.log(`fetched users - `, users)),
      map(users => {
        return users.map(user => this.convertResponse(user));
      }),
      catchError(handleError.bind({ logger: this.logger }))
    );
  }

目前,我正在使用tap()记录响应。然后使用map()转换响应对象。但是显示的日志消息是转换后的对象的消息,而不是服务器的原始响应。

如何在转换之前捕获响应对象?

编辑-

  private convertResponse(user: IUser): IUser {
    user.createdDate = new Date(user.createdDate);
    user.modifiedDate = new Date(user.modifiedDate);
    return user;
  }
拉扎尔(LazarLjubenović)

您的convertResponse方法对数组中的对象进行了变异(然后返回变异的对象)。确实记录了阵列的“未转换”版本,但是当您在开发人员工具中单击“扩展”时,该突变已经发生,并且您正在查看发生突变对象的外观

在Chrome中扩展对象时,如果将鼠标悬停工具提示在扩展旁边的蓝色“ i”工具提示上,则会看到此警告

全图

更改您的convertResponse方法以返回一个新对象。

  private convertResponse(user: IUser): IUser {
    return {
      ...user,
      createdDate = new Date(user.createdDate),
      modifiedDate = new Date(user.modifiedDate),
    }
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

http.get响应对象-无法访问json()?

HTTP 1.1 GET请求太快,服务器无法响应,导致TCP重传

Akka-http如何记录服务器错误响应?

Delphi发送HTTP GET请求而无需等待服务器响应

在Angular中执行Http get方法而无需重试,然后等到服务器发送响应?

使用Go向本地服务器发出GET http请求时为空响应

Gson HTTP 响应对象

创建 HTTP 响应对象

如何从http响应中获取服务器名称

HTTP响应标头,用于识别响应请求的实际服务器

如何保存Angular 6中的http获取响应对象

不等待从 http get request angular 上的服务器获取数据

file_get_contents无法打开流:HTTP请求失败!HTTP / 1.1 500内部>服务器错误

通知推送服务器与简单的HTTP POST / GET

Angularjs $ http.get()。JSON fron服务器

java http服务器响应

如何从http.Get获取JSON响应

无法从HTTP Get方法获得响应

从libevent中的HTTP服务器响应获取所有HTTP标头

春天引导资源服务器验证令牌HTTP POST而不是HTTP GET的

如何在Go http服务器中解析http Get请求正文?

如何使用在Angular Pipe内部执行HTTP请求的服务

无法从Angular 4中的http get方法获取对象属性

等待http.get()的响应

响应对象以及 http 状态代码

非HTTP响应消息:目标服务器未能响应:我的服务器无法处理负载吗?

如果在调用http.Get(url)时发生错误,我们是否需要关闭响应对象?

从服务器角度进行HTTP跟踪

无法获取完整的 http get 请求