如何使用$ resource操作设置自定义标题?
用$ http,我们可以这样做:
var config = { headers: { 'something': 'anything' } }; $http.get('url/to/json', config) .success(function() { // do something… })
我想做同样的$资源参考(不工作):
var config = { headers: { 'something': 'anything' } }; MyResource.get( config, function() { // success // do something… } );
相应的服务声明如下:
.factory('MyResource', function($resource){ return $resource('url/to/json'); })
它不工作:configuration对象去的url,而不是在http头。
有没有办法做到这一点 ?
自AngularJS 1.1.1以来, $resource
headers
可用。 确保你有正确的版本使用。
格式是
$resource('url/to/json', {}, {headers: { 'something': 'anything' }});
上面的看起来不正确。 $资源的第三个参数应该是不同的。 这对我来说似乎更加正确:
$resource('url/to/json', {}, { get: { method: 'GET', headers: { 'something': 'anything' } } });
演示代码
angular.module('Test',['ngResource']) .controller('corsCtrl', function ($scope, $http, MyResource) { $http.defaults.headers.common['test']= 'team'; //Using $http we can set header also MyResource.get(); }) .factory('MyResource', function($resource) { //Services return $resource('url/to/json'); })
JsFiddle DEMO
see in Request Header
资源操作中的headers
对象既支持其字段的static
值,也支持从函数返回的dynamic
值。
$resource('url/to/json', {}, { get: { method: 'GET', headers: { 'header_static': 'static_value', 'header_dynamic': dynamicHeaderVal } } }); function dynamicHeaderVal(requestConfig){ // this function will be called every time the "get" action gets called // the result will be used as value for the header item // if it doesn't return a value, the key will not be present in the header }
要使用“Content-Type”标题,您可能需要至less为1.4.7+版本指定一个数据主体,这是由于$ http删除标头而没有==='content-type'的数据主体。 见1.4.7 / angular.js中的 # 10255
我只是设置“data:false”来欺骗它,而不指定数据体:
$resource('url/to/json', {}, { get: { method: 'GET', data: false, headers: { 'something': 'anything' } } });