NestJS:记录来自 HttpService 调用的请求/响应?

Posted

技术标签:

【中文标题】NestJS:记录来自 HttpService 调用的请求/响应?【英文标题】:NestJS: Logging the request/response from HttpService calls? 【发布时间】:2019-08-21 04:57:52 【问题描述】:

我想知道是否可以使用来自HttpModuleHttpService 记录请求、响应和错误。

我以前用过AXios的拦截器,HttpService包裹了axios但是这里好像不能加拦截器,里面好像没有位置

HttpModule.register(...)

然后我认为 NestJS 自带拦截器,想知道是否可以使用 NestJS 拦截器。

我不想将拦截器应用于控制器、服务,而是将其应用于HttpService

任何想法,有点迷失如何以nestjs方式做到这一点。

提前致谢

【问题讨论】:

【参考方案1】:

HttpService 直接通过get axiosRef() 公开其axios 实例。有了它,你可以添加一个axios interceptor

this.httpService.axiosRef.interceptors.request.use(config => console.log(config));

例如,您可以在AppModuleonModuleInit() 中执行此操作。

【讨论】:

谢谢!这让我可以继续使用我原来的拦截器,出于兴趣,我是否在这里重新发明*** :-) 我的意思是,是否可以使用 nestjs 拦截器来做同样的工作 - 或者最好坚持使用 AXIO 拦截器。跨度> 不可能在控制器上下文之外使用嵌套拦截器,至少我不知道如何。 ? 所以我认为坚持使用 axios 拦截器是您最好的选择。或者,您也可以为进行日志记录的HttpService 构建一个外观。但在我看来,使用拦截器更干净 感谢您的帮助。 @Kim Kern 是否可以从传入请求中读取 cookie 到控制器并将其传递给拦截器以将其添加到 axios 请求的标头中?

以上是关于NestJS:记录来自 HttpService 调用的请求/响应?的主要内容,如果未能解决你的问题,请参考以下文章

NestJs 异步 httpService 调用

在 NestJS 中缓存 axios httpService

RxJS:使用 NestJS HttpService 对分页 API 进行并行 http 调用

在 Nest JS 中发出 http 请求时出现 httpService 未定义错误

如何使用 jest 测试 HttpService.Post 调用

Axios.all 在 Nestjs 中可用吗?