【问题标题】:AngularJS $resource Headers POSTAngularJS $resource 标头 POST
【发布时间】:2015-11-29 10:03:42
【问题描述】:

我想知道如何将标头传递给 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: 我在工厂的更新方法中指定了标题。当我使用该工厂执行“保存”时,默认情况下已采用该标题。但我已经为 PUT 方法明确指定了它。正确的?为什么以及如何?

问题 3: 如果我想为所有 Http 方法共同指定特定工厂的标头,该怎么做?

问题 4: 传递参数的命名法和参数前“@”符号的含义以及下面的部分,AppList是WebAPI中使用的参数名称,它是否必须与WebAPI方法中的参数名称匹配,如果它不匹配,它不工作:(

AppList: '@req'

【问题讨论】:

    标签: angularjs angularjs-resource


    【解决方案1】:

    恐怕我们不使用$resource,但它确实依赖于$http。我们使用以下配置标题。不确定您的其他问题。

    我会说我们也不直接使用 $http。我们创建了我们自己的“requestHelper”服务,我们可以在任何地方注入。这允许我们在调用 $http 之前注入一些东西,并在将结果传递给真正的调用者之前捕获响应。帮助处理常见错误。

    为 $http 配置标头:

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

    【讨论】:

    • 谢谢罗伯。我还没有对此进行测试,我假设在上述方法中设置默认标头也适合 $resource 。如果我错了,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多