如何在 HTTP 请求上设置模块特定的自定义 headers?

How can I set module specific custom headers on a HTTP request?

我希望能够对我的应用程序触发的 HTTP 请求设置自定义 header。此 header 必须指示从哪个子模块触发了请求。

我已经尝试创建一个拦截器和一个装饰器(在每个模块中),但这两个选项都放在全局 angular $http 服务上,因此相互覆盖。

唯一可行的选项是在调用 $http 服务时指定 header,但这并不是我真正想要的。目标是在每个模块上编写拦截器或装饰器,以捕获来自该模块的所有请求,并相应地设置 header。

关于如何解决这个问题有什么想法吗?

很确定这不能仅通过使用模块进行分离来解决,因为您已经发现 $http 服务位于自动包含的 'ng' 模块中。当您注入 $http 时,您将获得在 'ng' built-in 模块中定义的相同实例。

你最好的选择可能是编写用于两个 factory/service objects 的基础 类,每个都抽象出实际调用并设置适当的 headers。 API 抽象层实现的良好基础 https://gist.github.com/jelbourn/6276338

你可以做的是(我所做的)在所有 api 路径前加上模块名称,例如'stk-api/abc/get'、'fu-api/xyz/get' 等。然后在拦截器中更改 api 路径以删除模块部分 'stk-' 或 'fu-' 并添加自定义 header 根据删除的部分或模块名称..

我知道这是一种变通的解决方案,但它对我来说很有效...