扩展angularjs $ resource服务以包含公共头

时间:2013-12-06 11:05:39

标签: angularjs angular-resource

我想为现有的角度$resource服务编写一个包装器服务,以便默认情况下将一些自定义标头添加到http请求中。我知道我们可以使用$httpProvider.defaults.headers.common设置公共标头。但是这样我的所有请求都会有这个标题,这不是我想要的。

如果$resource服务可以扩展到包装服务中,我可以定义这些公共标题,这样会更加清晰。这样,无论何处需要添加公共头文件,我都可以选择性地使用此包装器服务。

1 个答案:

答案 0 :(得分:0)

这可能不是您正在寻找的答案,但我会分享我的想法。我正在使用角$ http。我这样做的方法是在每次api调用中指定正确的标题。

这样的事情:

authenticatePlayer: function(postData) {
        return $http({
          method  : 'POST',
          url     : api + 'auth/player',
          data    : postData,
          headers : {'Content-Type' : 'application/json'}
        });
      },

uploadAvatar: function(email_address, fd) {
        return $http({
          method  : 'POST',
          url     : api + 'player/' + email_address + '/avatar',
          data    : fd,
          withCredentials: true,
          headers : {'Content-Type' : undefined, 'X-Token' : credential.token},
          transformRequest: angular.identity //awesome! automatically set to the correct header request
        });
      },
fbLogin: function(data) {
        var xsrf = $.param({fb_access_token: data});
        // console.log(postData);
        return $http({
          method  : 'POST',
          url     : api + '/user/v1/login',
          data    : xsrf,
          headers : {'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'}
        });
      }

我不是角度方面的专家,但这是我的方式。希望它有所帮助:)