在HTTP请求到JSON后,如何将angular内存中web api返回的响应变形为Observable?

在HTTP请求到JSON后,如何将angular内存中web api返回的响应变形为Observable?,json,angular,interceptor,angular2-observables,Json,Angular,Interceptor,Angular2 Observables,我肯定可以映射出可观察的对象,并以我喜欢的任何方式转换响应,但在经历过程中,我遇到了 响应接收器 因此,我想知道我是否可以发送一些配置,并在不编写额外函数的情况下获得JSON响应 关于responseInterceptor或如何使用它的文章并不多。 如果不是这样,那么是否有其他方法可以使用angular内存中web api本身来实现这一点?内存中web api和angular的ResponseInterceptor用于在测试场景中伪造/操纵请求 毕竟,我不太清楚您的目的是什么。在这个拦截器的帮助

我肯定可以映射出可观察的对象,并以我喜欢的任何方式转换响应,但在经历过程中,我遇到了

响应接收器

因此,我想知道我是否可以发送一些配置,并在不编写额外函数的情况下获得JSON响应

关于
responseInterceptor
或如何使用它的文章并不多。
如果不是这样,那么是否有其他方法可以使用
angular内存中web api
本身来实现这一点?

内存中web api和angular的ResponseInterceptor用于在测试场景中伪造/操纵请求


毕竟,我不太清楚您的目的是什么。

在这个拦截器的帮助下,您可以在返回到可观察状态之前修改响应

您可以修改默认HTTP方法返回的响应, 由
collectionHandler
调用,通过添加
responseInterceptor
方法调用您的
InMemoryDbService
类。这个
collectionHandler
如下调用您的拦截器:

responseOptions = this.responseInterceptor(responseOptions, requestInfo);
要测试它是否正常工作,您可以将此代码添加到您的
InMemoryDbService

responseInterceptor(res: ResponseOptions, ri: RequestInfo):ResponseInterceptor {
  console.log("call responseInterceptor");
  return res;
}

如果它拦截XHR调用,它不应该是
requestInterceptor
?我只是想知道是否有一种方法可以返回JSON(因为我遇到了
responseInterceptor
),而不是HTTP请求后的可观察值(由angular in-memory web api处理)。我想你是对的。我更新了我的答案。不过,你想达到什么目的还不太清楚。你可能有一些代码可以给我们看吗?这将有助于让事情变得更清楚。我想修改返回的observable中包含的数据
(response)
。让它成为我想要的JSON格式。所以我想,这可以在
responseInterceptor()
中完成。你看到了吗?是的,我看到了。我想在
响应到达
http方法调用方之前对其进行操作,比如:get()
。所以,我想在它出现之前,它会出现在responseInterceptor()上。我应该能够像我想要的那样操作它。在测试上述内容时,我看到类型为
ResponseOptions
res
返回,但函数期望
ResponseInterceptor
类型返回。这也会被我的typeScript标记。我正在尝试你建议的,在
responseInterceptor()
中,我看到
res
,我修改它,使用res中的数据创建一个不同的JSON对象,并返回新创建的
对象。但是我执行HTTP请求的地方是:
HTTP.get(url.map)(reponse=>//somecode)。捕获((错误)=>日志错误//)
。我一直收到这个错误:
{“ok”:false,“statusText”:“未知状态”,“url”:“api/sessionData/1”}
。我做错了什么?不应该修改responseInterceptor()返回的值?是的,它确实有效,我创建了JSON对象并将其分配给
res
主体。比如:
res.body
=newOb;并返回
res
本身。谢谢