Angular:如何扩展 HttpClient?

问题描述 投票:0回答:1

我在文档中没有找到如何扩展HttpClient或如何为我的一些HTTP请求指定不同的拦截器。在文档中,他们解释了如何在

HTTP_INTERCEPTORS
中设置拦截器,但每个 HTTP 请求都会被拦截。

我需要自定义 HttpClient 实现来设置具体的标头、端点或响应拦截器(我不想使用 Restangular,我更喜欢使用内置的 Angular HttpClient 实现)。

  • 我有一个带有特定端点和特定标头的 oAuth API 来设置我的 api-key。
  • 我还有我的“资源”API,需要特定的标头(
    Authorization: Bearer
    ...和 API-KEY)和特定的响应拦截器来捕获所有 HTTP 401 响应。
  • 也许,我需要在没有任何拦截器的情况下调用一些外部API

我知道使用 Restangular 可以做到这一点,但我更喜欢使用

HttpClient
。怎么可能?

我找到了这篇文章,但是,这是为了

Http
,而不是为了新的
HttpClient
Angular 实现。

angular interceptor angular-httpclient
1个回答
2
投票

我不会扩展 HttpClient,而是采用以下三种方法之一:

  1. 让每个拦截器检查请求的 URL,然后要么执行它的工作,要么只调用
    next.handle(req)
    而不执行任何其他操作,具体取决于 URL

  1. 编写一个委托拦截器,根据您的要求决定委托给哪些其他拦截器。

  1. 只需编写一个大的拦截器,根据 URL/您需要的任何内容来决定做什么。

我的直觉是选择#1

© www.soinside.com 2019 - 2024. All rights reserved.