假設我們在角4 HttpClient
基於應用程序執行的響應攔截:修改其有效載荷前克隆一個響應?
export class MyInterceptor implements HttpInterceptor {
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).map((event: HttpEvent<any>) => {
if (!(event instanceof HttpResponse))
return event;
// Modify event.body somehow like: event.body.items = { ... }; - do we need to do event.clone() before?
});
}
}
我們知道,如果我們正在執行的請求攔截器,我們必須clone()
的req
保持其不變性。
但是,我們需要clone()
修改通過body
屬性暴露它的有效載荷之前的反應如何?
試試看吧?或者做研究:[文檔](https://angular.io/guide/http#immutability)提及請求和響應的不變性;和['HttpResponse'](https://angular.io/api/common/http/HttpResponse)暴露只讀通過get訪問一切,並提供相同的'.clone'方法。 – jonrsharpe
這[發佈](https://netbasal.com/a-taste-from-the-new-angular-http-client-38fcdc6b359b)對,你應該如何使用攔截器很好的解釋。看一眼,你可能會發現它很有用。 – Mihailo
@jonrsharpe:我們應該觀察什麼時候響應沒有被克隆,以防需要什麼?至於文檔,是的,他們提到了響應的不可變性,但是您提供的部分的其餘部分只針對「請求」。所以他們不清楚地說我們是否需要克隆響應。 –