angularjs - 如何使用 $resource 获取状态码?

标签 angularjs angularjs-resource

我提出要求的工厂在这里:

angular.module('myapp').factory('testResponse',
        ['$http', '$resource', 'AppConfig', '$routeParams', '$rootScope',
            function($http, $resource, $routeParams, $rootScope) {
                $http.defaults.headers.common['Authorization'] = authorizationHeader;
                $http.defaults.headers.post['Content-Type'] = 'application/json';
                return $resource('test.json'), {}, {
                    query: {method: 'GET'}
                };
            }]);

Controller 中的代码在这里:

angular.module('myapp').controller('TestCtrl',
        ['$http', '$scope', 'testResponse', 'AppConfig', function TestCtrl($http, $scope, testResponse) {
                testResponse.query(function(data) {
                    console.log(data.status);
                })
            }]);

理想情况下,它应该记录 $http 请求中的状态,但我无法为 $reource 获取它

最佳答案

在服务 testResponse 中,您可以将返回语句更改为此

return $resource('test.json'), {}, {
    query: {
        method: 'GET',
        transformResponse: function(data, headers,statusCode) {
            console.log(statusCode);//prints 200 if nothing went wrong
            var finalRsponse = {
                data: data,
                responseStatusCode: statusCode
            };
        return finalRsponse;
    }}
};

并且在您的 Controller 的 testResponse 服务的 then(success,error) 成功方法中,您可以使用 data.responseStatusCode 访问状态代码。

我已经在 angularjs-1.2.321.5.7 上测试过了。

关于angularjs - 如何使用 $resource 获取状态码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27655598/

相关文章:

javascript - Angular - For 循环 HTTP 回调/ promise

javascript - 使复选框在 Angular 中不可点击

angularjs - 使用 $parsers(和 $formatters)对指令进行单元测试

javascript - 类型错误 : undefined is not a function in Angular Resource

AngularJS 资源 - PUT 方法未获取 id

javascript - 当另一个输入更改时强制 ngPattern 验证

javascript - 如何使用自定义指令创建 angularjs 动态模板?

javascript - Angularjs 资源多参数

javascript - Angular JS 和跨源请求

javascript - 响应类型为 text/plain 的 Angular 资源总是生成一个字符串数组