我想知道如何将标头传递给AngularJS $ resource方法
这是工厂方法
.factory('DataRepository', function ($resource) {
return $resource(serviceUrlPrefix + '/api/v1/AppList/:id', { id: '@id' }, { 'query': { method: 'GET', isArray: false }, 'update': { method: 'PUT', AppList: '@req', headers: { 'X-Requested-With': 'XmlHttpRequest' } } });
});
这是对dataRepository的调用
dataRepository.update({ id: req[uniqueIDColumn] }, req, function (data) {
},
function (error) {
});
此代码工作正常。但我的查询很少
问题1: 而不是在工厂方法中指定标头,如何在调用工厂方法时指定它?我尝试了一些方法,但它没有成功。
问题2: 我在工厂的update方法中指定了标头。当我执行" Save"使用该工厂,默认情况下已采用该标头。但我已经为PUT方法明确指定了它。对?为什么以及如何?
问题3: 如果我想为所有Http方法指定特定工厂的标题,那么它的方法是什么?
问题4: 什么是传递参数的命名法和" @"参数之前的符号以及下面的部分,AppList是WebAPI中使用的参数名称,它是否必须与WebAPI方法中的参数名称匹配,如果它不匹配,则它不起作用:(
AppList: '@req'
答案 0 :(得分:2)
我担心我们不会使用$ resource,但它确实依赖于$ http。我们使用以下配置标头。不确定你的其他问题。
我会说我们也不直接使用$ http。我们创建了自己的" requestHelper"我们到处注入的服务。这允许我们在调用$ http之前注入内容,并在将结果传递给真正的调用者之前捕获响应。有助于常见的错误处理。
为$ http配置标头:
module.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);