Как указать параметр заголовков для пользовательских действий Angular $resource
Следующее работает отлично, но я думаю, что это изменяет $httpProvider глобально, чего я не хочу.
angular.module('SessionService', ['ngResource'])
.config(function($httpProvider){
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
})
.factory('Login', function($resource){
var resource = $resource('/adminui/login',{},{
post:{
method:"POST",
isArray:false
},
});
return resource;
})
LoginCtrl = function($scope,Login) {
$scope.login = function(){
Login.post($.param({user:$scope.user.username,password:$scope.user.password}),$.noop,$.noop)
}
}
Есть ли способ сделать это вместо этого?
...
.factory('Login', function($resource){
var resource = $resource('/adminui/login',{},{
post:{
method:"POST",
isArray:false,
headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} // ignored
},
});
return resource;
})
Параметр "заголовки", кажется, игнорируется. запрос все еще
Content-Type:application/json;charset=UTF-8
Мое значение для заголовков в порядке?
Ответы
Ответ 1
Я подтвердил, что 1.1.3 действительно поддерживает это. Однако вам нужно убедиться, что вы также получите версию ресурсной службы версии 1.1.3. Быстрый тест:
angular.module('myApp', ['ngResource']).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {templateUrl: 'partials/partial1.html',controller: 'MyController'});
$routeProvider.otherwise({redirectTo: '/'});
}])
.controller("MyController", function( $scope, Bug) {
Bug.post({test:"test"});
})
.factory('Bug', function($resource){
var resource = $resource('/bug',{},{
post:{
method:"POST",
isArray:false,
headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
},
});
return resource;
});
Это сделает запрос с установленными заголовками (подтвержденными с помощью Chrome):
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Быстрое замечание, мне не удалось найти загрузку angular -resource.js, поэтому мне пришлось зайти на сайт github, чтобы загрузить его. Это здесь.
Для некоторых хихиканья я создал скрипку. Обратите внимание, что будет неудачный вызов POST, но его заголовки установлены правильно. Пример скрипта
Ответ 2
Пока документы разработки (по состоянию на 12 октября) показывают, что переопределение заголовков возможно в $resource, оно еще не выпущено (v1.0.2 или v1.1.0). Однако функция находится в v1.0.x и главных ветвях. Чтобы получить эту функцию, вы можете подумать о создании из ветки v1.0.x на данный момент.
Как построить: http://docs.angularjs.org/#H1_4
В качестве альтернативы вы можете извлечь из сборки моментальных снимков: http://code.angularjs.org/snapshot/
Похоже, эта функция будет в следующей версии.
Ответ 3
Просто добавив ссылку на файлы ресурсов 1.1.5 (и другие): http://code.angularjs.org/1.1.5/
Вы можете установить URL-адрес в соответствии с той версией, которую вы ищете.
например 1.1.4: http://code.angularjs.org/1.1.4/