模拟服务器响应,即使服务器不可达

时间:2019-01-15 07:45:41

标签: angular angular-httpclient-interceptors

我知道的事情(如果我错了,请纠正我,谢谢:)):

  • HttpInterceptor的工作方式类似于Aspect-oriented programming;
  • 可以为请求添加/修改httpOptions
  • 使用clone()修改响应也可以实现响应;

我的问题

我想测试一些库,而它们的相关服务器有时可能会在开发时关闭。我只是在乎数据,因此无法与服务器交互

  

当请求满足某些模式时,是否有可能我可以仅返回已经准备好的模拟数据而无需请求服务器即使服务位于其他库中

我的要求

  • 库中的所有逻辑保持不变;
  • 使用模拟数据来响应库中的http请求;

更新于2019-01-15

借助于 @Sachin Gupta 的帮助,我用此interceptor进一步测试了demo

已完成的操作:

  • auth-interceptor.ts为请求添加标题;
  • logging-interceptor.ts已添加以跟踪请求的详细信息和时间成本;
  • data-mocking-interceptor.ts停止请求到服务器,并直接返回模拟数据。

2 个答案:

答案 0 :(得分:1)

看看这个。

https://stackblitz.com/edit/angular-json-http-response-catch

如果服务器可访问,则会填充数据,否则将模拟发送为响应

拦截器

purchase.order.line

答案 1 :(得分:0)

您还可以考虑以下两种选择:

  1. 使用ngrx store,您可以在其中直接用模拟数据填充商店,也可以从服务中返回模拟数据(服务是将http请求发送到服务器并将数据返回到angular app的服务)

OR

  1. 使用服务人员,您可以根据自定义条件返回任何想要的东西。本质上,您在这里要做的是先离线进行PWA。这是更好的方法,因为http请求(作为数据源)已完全从其用法中抽象出来。您的应用只看到服务工作者,并且服务在哪里获取其数据(http或模拟)-您的应用不在乎。

PS。 服务工作者方法与拦截器方法有些相似,但在较低层次上,它不是特定于角度的,而是通常是Web技术的一部分。