问题标签 [angular-httpclient-interceptors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
239 浏览

angular - 拦截器没有拦截,尽管只有一个 HttpClientModule

我在 Angular 中有应用程序,我只有一个 HttpClientModule,但是当我在构造函数中提供 HttpClient 时,如下所示:

但在另一个模块中我也有类似的构造函数

我的 app.module

表格模块内容

主应用模块

我究竟做错了什么?

0 投票
1 回答
675 浏览

angular - 在 Angular HTTP 拦截器中对拦截函数进行单元测试

我编写了一个 Angular 9 HTTP 拦截器,我想在相对隔离的情况下对拦截功能进行单元测试。从我已经在StackOverflow上看到的情况来看,人们建议发出虚假 HTTP 请求或返回基本请求,因为我使用 .pipe 方法(TypeError: next.handle(...).管道不是函数

这是我的拦截功能,请问您建议对该功能进行单元测试吗?

0 投票
1 回答
272 浏览

angular - Angular 中状态为 302 时读取响应头

我如何在 Angular (v8+) 中读取XHR调用的响应标头,$http因为它的状态是 302 并且它是由浏览器重定向的?在我的情况下,由于重定向 url 有不同的来源,我只从下面的代码中得到一个未知错误:

0 投票
0 回答
379 浏览

angular - 测试 HttpInterceptor Angular 10 时出错

我正在开发一个 Angular 10 应用程序,该应用程序使用HttpInterceptor向所有响应添加特定标头。不幸的是,在尝试测试此拦截器时,我不断收到以下错误:

或类似的变体:

我的期望是这个测试会通过,但我现在不知道为什么它不工作。

这是我的拦截器:

这是我的测试:

也就是说,可能值得指出的是,我尝试应用以下资源中的解决方案无济于事(大多数似乎与我已经拥有的类似,而且许多似乎适用于旧版本的 Angular):

  • 来自 Angular 4 的单元测试 HttpInterceptor:在这里,我发现了一篇有用的文章,它几乎完全符合我的需要,但它实际上不适用于我的情况(我遇到了上述错误)。我说的几乎完全是因为我用来获取令牌的服务实际上并没有HttpClient根据我的判断来使用。
  • 与我的问题不完全一样,但足够相似,可以尝试一下。我尝试使用教科书描述的解决方法,但显然这与我遇到的问题还不够接近。
  • 我还尝试在我的测试中使用导致上述错误被消除spyOn的函数,http.get(...)但是当我这样做时它没有调用我的intercept函数。

非常感谢任何帮助 - 谢谢!

0 投票
1 回答
152 浏览

angular - 如何使用spring boot为rest api创建用户界面

我使用 springBoot 创建了一个 Rest API,并使用 Postman 创建 GET、POST、PUT、Delete 请求。为了向最终用户显示数据,我正在使用 Angular 。我的应用程序对 enduser 是只读的,因此我只从我的 Angular 代码中调用 Get Requests 。

我需要为管理员创建用户友好的界面,以使用表单和合适的选项输入数据。

我应该为管理员创建另一个角度应用程序,还是也可以使用 springboot,

我还想知道我是否能够在相同的 url 上使用我的客户端和管理应用程序,或者我必须购买 2 个 url,一个用于客户端,一个用于管理员。

0 投票
0 回答
323 浏览

angular - Angular 11 - 订阅不返回响应类型文本的正确数据

我有一个奇怪的问题。我希望我能解释一下。

我在后端加密了一些东西,API 响应返回一个加密格式的纯字符串,如下所示:

现在,在 Angular 客户端中,我有将上述代码转换为 JSON 响应的解密逻辑,我需要在 UI 中显示该响应。

由于我需要过滤特定的 APIS 进行解密,因此我正在修改拦截器中的响应,如下所示:

但是我用于 HTTP 调用的服务是这样的:

到目前为止一切都很好,但是一旦我修改了代码,并且一个组件订阅了它,我在控制台中收到错误:

我认为问题在于 HTTP 响应类型是导致订阅失败的文本,而它获取的解密内容是 JSON。

如果我将 getWithText() 响应更改为 JSON,则拦截器 HTTP 调用本身将失败,因为响应类型是加密字符串。

我该如何解决这个问题?有什么办法,我可以通过接受 JSON 响应来使我的订阅代码工作。提前致谢。

0 投票
0 回答
67 浏览

angular - 如何在 Interceptors Angular 中调用 API 服务

我正在尝试在拦截器中调用 API 服务。

我的 API 服务代码:

我的拦截器代码:

如果我在 Interceptor 内调用 API,它会多次命中。