AngularJS $资源标题POST

时间:2015-09-03 14:03:08

标签: angularjs angularjs-resource

我想知道如何将标头传递给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'

1 个答案:

答案 0 :(得分:2)

我担心我们不会使用$ resource,但它确实依赖于$ http。我们使用以下配置标头。不确定你的其他问题。

我会说我们也不直接使用$ http。我们创建了自己的" requestHelper"我们到处注入的服务。这允许我们在调用$ http之前注入内容,并在将结果传递给真正的调用者之前捕获响应。有助于常见的错误处理。

为$ http配置标头:



module.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);