2

Следующий подход не работает:Как установить значения заголовка по умолчанию в Угловом ресурсе?

angular.module('myApp.myModule').factory('MyResource', function($resource, $cookies) { 

    var token = $cookies.get('token'); 
    var user = $cookies.get('username'); 

    console.log ("Token: "+token+" User: "+user); 

    return $resource(
     'http://my-rest-api/whatever/:id', 
     { 
      headers: { 
      'token': token, 
      'user': user 
      } 
     } 
)}); 

Console показывает правильные данные, но они не были отправлены ..

Это часть где-то в соответствующем контроллере (выдержка):

var getEntryOne = MyResource.get({ id: 1 }, function() { 
    console.log("Result: "+getEntryOne); 
}); 

Я получаю сообщение «Сообщение: токен недействителен», я вижу заголовки request-http в firebug, они не были установлены.

ответ

1

Вы настраиваете заголовки для запроса GET, то он должен быть там в get опции $resource

$resource('http://my-rest-api/whatever/:id',{},{ 
    get:{ 
     method:"GET", 
     headers:{ 
      'token': token, 
      'user': user 
     } 
    }, 
}); 

Если вы хотите добавить эту информацию заголовка для каждого запроса, то вы могли бы HTTP inteceptor, который будет добавить заголовок для каждого запроса.

app.service('MyResourceInterceptor', ['$cookies', function($cookies) { 
    var token = $cookies.get('token'), 
     user = $cookies.get('username'), 
     service = this; 
    service.request = function(config) { 
     config.headers['token'] = token; 
     config.headers['user'] = user; 
     return config; 
    }; 
}]); 

app.config([ '$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('MyResourceInterceptor'); 
}]); 
+0

Да, я знаю это, но он должен работать для всех методов. Я не хочу писать каждый раз при каждом методе. –

+0

@Vienna, тогда вы должны пойти на 'httpInterceptor' и тем, что можете разместить этот заголовок по каждому запросу. –

+0

Как его использовать в моем случае выше? –