如何在Restangular中添加多个Auth Interceptor?

时间:2016-10-03 11:19:45

标签: javascript angularjs html5 ionic-framework restangular

开发的应用程序:ionic + Restangular

我在Restangular for BaseUrl和Auth Interceptor中有一个全局配置。[比如http://app。**。com]

现在,我的要求就是拥有不同的一组。[比如http://yammer.com]

如何为这些设置不同的Auth Interceptor和BaseURL?

目标:应用程序将具有2个BaseURL和AuthInterceptor。 如果我打电话给Yammer,应用程序将只与Yammer的URL一起通信,如果我调用任何其他API,它将与全局配置通信。

1 个答案:

答案 0 :(得分:1)

你可以使用 addRequestInterceptor 添加任意数量的拦截器,并将你的逻辑放到每个拦截器上。

在你的情况下你可以有一个或两个拦截器,它可以检查baseurl并改变标题......

  RestangularProvider.addFullRequestInterceptor(function(element, operation, route, url, headers, params, httpConfig) {
    if (url.startsWith('your.base.url2')) {
      // change headers or do whatever you want
    }
    return {
      element: element,
      params: params,
      headers: headers,
      httpConfig: httpConfig
    };
  });

  RestangularProvider.addFullRequestInterceptor(function(element, operation, route, url, headers, params, httpConfig) {
    if (url.startsWith('your.base.url')) {
      // change headers or do whatever you want
    }
    return {
      element: element,
      params: params,
      headers: headers,
      httpConfig: httpConfig
    };
  });

注意:此拦截器将在任何请求时触发,它们的顺序与index.html上的脚本顺序相同,第二个将在第一个之后获得编辑请求,因此您应该小心当你使用多个拦截器......