问题标签 [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 投票
3 回答
12400 浏览

angular - 在 Angular HttpClient 拦截器中使用承诺

我可以在里面使用 promiseHttpInterceptor吗?例如:

为什么我需要这个?因为在向服务器发出请求之前,我需要获取一个令牌以添加到请求标头。

我的拦截器:

要求:

我面临的问题:

->我在承诺解决之前收到此错误。

Promise resloves,我得到了我的令牌,但在错误之后。

0 投票
0 回答
267 浏览

angular-httpclient - 获取httpclient请求查询参数

嗨,我正在使用 Angular 5 拦截器来检查 HttpClient 请求 URL 是否包含查询参数,但即使在网络中我看到查询参数被传递,它也总是返回 false。

有人可以帮助我如何检索 HttpRequest 中使用的查询参数。谢谢!

0 投票
1 回答
917 浏览

angular5 - Angular 5 - 在 HttpInterceptor 中操作 HttpErrorResponse 的错误属性

我有自定义错误消息正文作为来自 rest api 的 JSON。

我想将它作为订阅错误范围内的对象。我尝试在每次使用 HttpInterceptor 响应后将其转换为对象。但是 HttpErrorResponse 是只读的。我怎样才能在服务中获得这个对象?

0 投票
0 回答
2034 浏览

angular - 拦截传入的 HTTP 请求

我正在开发使用 SSO 进行身份验证的应用程序。我们的 Angular 5 应用程序部署在 IIS 服务器上。因此,每当用户输入 URL 时,我们会将他们从 IIS 服务器重定向到 SSO 登录页面,然后他们将验证自己并重定向到实际的应用程序主页。在这里,我们想在 HTTP 请求重定向到应用程序的主页时捕获/拦截一些头部信息。

我已经通过 Angular 5 中的 HttpInterceptor ,其中给出了拦截器将转换传出请求。有没有可能拦截传入的请求?

0 投票
1 回答
461 浏览

angular - rxjs 可管道运算符之后的 HttpInterceptor

在执行一些 rxjs 的可管道操作符后,是否可以拦截 HttpClient 获取请求。就我而言,我有一个自动生成的 http 服务,它将 blob 响应转换为对象。我的全局错误拦截器也需要转换 blob,因为它在服务中的可管道操作符之前触发。

伪代码示例:

我在某处的要求:

我的 HttpClient 拦截器:

期望的行为:console.log 应该从地图操作员输出我修改的对象。拦截器似乎总是链中的第一部分。

我的问题:是否有可能实现我想要的输出?

BR

0 投票
1 回答
307 浏览

angular - 在同一模块中提供拦截器和依赖自定义服务的问题

我有AppModule片段,我在其中注入令牌处理拦截器

我的拦截器

接收错误

如果我在拦截内进行注入:

然后相对误差:

我尝试了 Angular git Cyclic dependency error with HttpInterceptor #18224中提到的解决方案, 但仍然没有成功。

0 投票
2 回答
3739 浏览

angular - Angular 6拦截器:更改响应内容类型

我正在使用 REST api,它向我发送带有文件信息(base64 内容、mime ...)的 json 数据。我想在 Chrome 中打开 PDF。URL.createObjectURL 是一个糟糕的解决方案,因为重定向后,我们无法下载文件。

因此,作为后端,我想将标头响应更改为“application/pdf”,并直接显示文件内容。

我在 HttpClient Interceptors 模块中搜索:

现在,如何显示这个?如果我使用组件,文件内容将显示在经典 html 页面中。

那么,有可能吗?有角?与节点?

非常感谢,

0 投票
1 回答
2966 浏览

angular - 可以在 HttpInterceptor 中获取上传进度事件,但不能从 HttpClient 调用中获取?

我正在使用HttpInterceptor并且我有一个 Http 服务,它调用运行 HttpClient 的 http 方法。我正在尝试获取上传进度,我在这里面临两个问题,

首先,进度事件仅被HttpInterceptor我的服务中的任何 Http 调用方方法捕获,而不是被我的任何 Http 调用方方法捕获。看起来前者掩盖了进度报告。

其次,进度值总是从 100% 开始,并且开始递增。

我正在懒惰地加载我的模块,HttpInterceptor 在 app.module 级别注册。

如何从 http 方法中获取进度值?

我的HttpInterceptor服务看起来像,

我的 Http 调用者服务,

我试图取得进展的方法是,

进步行为是,

在此处输入图像描述

0 投票
0 回答
171 浏览

angular - 调用服务方法并在拦截器中正确使用它

我的想法是创建一个名为loggedIn() 的服务方法,我想在拦截器中调用它。loggedIn() 服务方法应该提供一个在 localStorage 中可用的有效令牌。除了存在之外,我还想检查该令牌的有效性,因为我从服务器调用 verifytoken API。服务中的 verifytoken 方法中的 post 调用将执行此操作。

正如您在代码中看到的那样,我在loggedIn() 中调用verifytoken 服务方法。这是调用同一服务的事件方法的有效方法吗?

由于loggedIn() 将异步传递verifytoken 结果,在拦截器中调用它时是否需要订阅loggedIn() 服务方法?

在我的服务中:

在我的拦截器中:

0 投票
2 回答
194 浏览

angular - 即使服务器无法访问,也可以模拟服务器响应

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

  • HttpInterceptor工作方式类似于面向方面的编程
  • httpOptions可以对请求进行添加/修改;
  • 修改response withclone()也可以实现response;

我的问题

我想测试一些库,而它们的相关服务器有时在开发时可能会关闭我只关心数据与服务器没有交互是可以的

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

我的要求

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

更新于 2019-01-15

感谢@Sachin Gupta的帮助,我interceptor用这个演示进一步测试了。

做了什么:

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