【发布时间】:2019-04-13 22:33:33
【问题描述】:
我在最后一个 Angular 中使用了拦截器:
return next.handle(request).pipe(
map((event: any) => {
if (request.method == "GET") {
return event;
}
if (request.method == "POST") {
if (event.body) {
return event.body["result"];
}
}
return event;
}));
所以,我检查它是否是 POST 请求,我希望从带有密钥 result 的 JSON 中获取数据。
我也尝试在 Observer 中返回数据:
if (event.body) {
return Observable.of(event.body["result"]);
}
订阅是:
this.method.subscribe(res => {
console.log(res);
});
看这张图:
console.log(event); // This is default event - first selected area
console.log(eventToSend); /./ This is modified - second selected area
区别在于HttpResponse类型,缺少第二个修改对象eventToSend
【问题讨论】:
-
你能在 StackBlitz 上复制这个吗?也尝试在错误和完成的情况下记录。
-
我有完整的代码,我不知道使用是否正确,我应该返回观察者并从地图解析数据吗?
-
一个 http 拦截器应该返回一个 Observable
>。 angular.io/api/common/http/HttpInterceptor。这段代码没有多大意义。你想达到什么目的? -
我不这么认为。如果你这样做,那么你将不得不在其中使用
switchMap而不是map。 -
因此每个响应都有结构
{"result": {}},我需要解析它并返回没有result key的数据,这是主要目的。
标签: angular angular-http-interceptors angular7