RestangularProvider 和 RestangularConfigurer 的区别

difference between RestangularProvider and RestangularConfigurer

我想在我的模块中添加一个拦截器。

这是初始状态:

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。

但我不太清楚它是如何工作的,以及幕后发生了什么。 你能解释一下吗?

首先没有RestangularConfigurer模块。您只有 Restangular 及其提供者 RestangularProvider.

让我们从 providers 的 angularjs 文档开始。

请特别阅读Provider Recipe,因为我不会在这里重复它。

总而言之,RestangularProvider 只是一个配方,当您在配置模块中决定如何构建 Restangular api 时,还没有 Restangular api,但是您有自己的配方。

另一方面,Restangular 将在主模块启动后启动,因此在配置中实际上还没有 Restangular 模块。

如果您仍然坚持使用 Restangular 而不是它的提供者,您可以在 module#运行 中使用它而不是 模块#配置.