0

我正在尝试学习 AngularJS。我正在尝试向 REST api 发出简单的经过身份验证的获取请求。在这一点上,我只是想得到回应。我不断收到无效的密钥,因为我似乎无法正确发送标题。

angular.module('App', ['ngResource']);

function AppCtrl($scope, $resource){
$scope.app = $resource('https://theapiurl.com/parameter=:action',
    {action:'My Parameter works fine!'}, 
    {method: 'GET'},
    {headers: 'auth-key' : 'key'});
$scope.app.get();
}

我似乎无法发送标题。谢谢阅读。

4

2 回答 2

4

如果您使用的是 angular-resource 1.1.x+,则以下内容应该可以工作:

angular.module('App', ['ngResource']);

function AppCtrl($scope, $resource){
    $scope.app = $resource('https://theapiurl.com/parameter=:action',
      {
        action:'My Parameter works fine!'
      }, 
      {
        get: {
          method: 'GET',
          headers : { 'auth-key' : 'key' }
        }
      });
     $scope.app.get();
}

如果您使用的是 1.0.x 分支,这将不起作用。我相信唯一的选择是在 $httpProvider 中设置全局默认标头,或者直接使用 $http(不使用 $resource)。以下是全局设置标题的方法:

$httpProvider.defaults.headers.get['auth-key'] = 'key';
于 2013-11-02T01:40:59.570 回答
1

为避免在每个资源中设置标头,您可以使用拦截器:

app.config(function($httpProvider) {
    $httpProvider.interceptors.push(function($q) {
        return {
            'request': function(config) {
            config.headers['auth-key'] = 'key';
                return $q.when(config);
            }
        };
    });
});
于 2013-11-02T04:28:49.413 回答