在有关新的文档中HttpClientModule
Angular 4.3的新版本中,拦截请求的机制解释得非常好。还提到了响应拦截器机制,但我找不到任何相关内容。
有谁知道如何拦截响应以便在将正文消息发送到服务之前修改正文消息?
Thanks.
我最近做了一个HttpInterceptor
为了解决客户端某些 JSON 中的循环引用,本质上是将任何对象替换为$ref
属性与 JSON 中具有匹配的对象$id
财产。 (这是如果 Json.Net 配置为PreserveReferencesHandling.Objects
and ReferenceLoopHandling.Ignore
).
这里的答案在某种程度上帮助了我,但没有一个显示如何修改响应的正文,就像OP的需求一样。为此,需要克隆事件并更新正文,如下所示:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).map(event => {
if (event instanceof HttpResponse && shouldBeIntercepted(event)) {
event = event.clone({ body: resolveReferences(event.body) })
}
return event;
});
}
任何不应修改的事件都会简单地传递到下一个处理程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)