2016-10-03 45 views
0

应用开发:离子+ Restangular如何在Restangular中添加多个Auth拦截器?

我有对BASEURL和验证拦截器在Restangular一个全局配置[。像http://app ** COM]

现在,我的要求是有不同的设定[如http://yammer.com]

如何为这些设置不同的身份验证拦截器和BaseURL?

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

+0

http://stackoverflow.com/questions/22274975/is-it - 可以使用的restangular-setbaseurl for two-api-access-points/22276211#22276211 –

+0

@Poyra zYilmaz感谢您的信息...什么是AuthInterceptor?如何为不同的场景发送标题? – Anand

+0

你可以检查baseurl与if条件,并采取不同的动作不同的网址... –

回答

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和第二个将得到编辑的请求后,第一个,所以你应该当心,当你使用多个拦截器...

+0

谢谢Poyraz :) – Anand