我想在我的模块中添加一个拦截器。
这是初始状态:
app.config(function ($stateProvider, $urlRouterProvider,RestangularProvider) {
RestangularProvider.setBaseUrl('/app/services');
});
我修改了这个:
app.config(function ($stateProvider, $urlRouterProvider, RestangularProvider, RestangularConfigurer) {
RestangularProvider.setBaseUrl('/app/services');
RestangularConfigurer.addFullRequestInterceptor(function (element, operation, route, url, headers, params, httpConfig) {
if (operation === 'get'){
console.log("RestangularProvider: call to get");
params.ts= new Date();
}
return {
element: element,
headers: headers,
params: params,
httpConfig: httpConfig
};
});
});
但是,我添加了一个错误:
Error: [$injector:unpr] Unknown provider: RestangularConfigurer
所以我用RestangularProvider替换了RestangularConfigurer。
但我不清楚它是如何运作的,以及幕后发生的事情。 你能解释一下吗?
答案 0 :(得分:3)
首先,没有 RestangularConfigurer 模块。您只有 Restangular 及其提供商 RestangularProvider 。
让我们从providers的angularjs文档开始。
请特别阅读提供商食谱,因为我在这里不再重复。
作为总结,RestangularProvider只是一个配方,应该如何构建Restangular api,因为你在配置模块中确定它还没有Restangular api,但你有你的食谱。
另一方面,在主模块引导后,Restangular将被引导,因此在配置中实际上没有 Restangular 模块。
如果您仍然坚持使用 Restangular 而不是其提供商,则可以在模块#stall 中使用它,而不是模块#config 。