来自$ resource的所有操作的自定义http标头

时间:2015-06-04 08:53:55

标签: javascript angularjs

我在文档中找到麻烦,允许我为特定$资源的所有操作定义我的自定义http标头,你知道怎么做吗?

这是我想要避免的事情

return $resource(main.dev + '/api/:entity/:action', '', {
    SaveUser: {
        method: 'POST',
        params: {
            entity: 'users',
            action: 'register'
        },
        headers: {
            api_key: main.api_key //same header 
        }
    },
    get:{
        headers: {
            api_key: main.api_key //same header 
        }  
    }
});

1 个答案:

答案 0 :(得分:0)

你可以使用像这样的httpinterceptor:

define(['./app'], function (app) {
  'use strict';
  return app.factory('requestInterceptor', ['$log', function ($log) {
    var requestInterceptor = {
      request: function (config) {
        $log.debug(config);

        //YOUR CODE HERE
        //if config.url starts with /api
        //config.headers.push token

        return config;
      }
    };
    return requestInterceptor;
  }]).config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('requestInterceptor');
  }]);
});

config.url以api开头时,您将标题插入config.headers