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

时间:2015-01-23 10:52:31

标签: angularjs http module decorator interceptor

我希望能够在我的应用程序触发的HTTP请求上设置自定义标头。此标头必须指示已触发请求的子模块。

我已经尝试过创建拦截器和装饰器(在每个模块中),但这两个选项都放在全局角度$ http服务上,从而覆盖了彼此。

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

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:3)

很明显,只有通过使用模块进行分离才能解决这个问题,因为您已经发现$ http服务在' ng'自动包含的模块。当您注入$ http时,您将获得在 '中定义的相同实例。内置模块。

您最好的选择可能是编写用于两个工厂/服务对象的基类,每个工厂/服务对象都抽象掉实际的调用并设置适当的标头。这里的API抽象层实现的基础很好https://gist.github.com/jelbourn/6276338

答案 1 :(得分:1)

你可以做的是(我做了什么)用模块名称作为所有api路径的前缀,例如: ' stk-api / abc / get',' fu-api / xyz / get'等等。然后在拦截器中更改api路径以删除模块部分' STK - '或者' fu - '并根据删除的部件或模块名称添加自定义标头..

我知道它是一种解决方法,但是我为我做了工作......