My factory for making request is here:
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'}
};
}]);
The code in controller is here:
angular.module('myapp').controller('TestCtrl',
['$http', '$scope', 'testResponse', 'AppConfig', function TestCtrl($http, $scope, testResponse) {
testResponse.query(function(data) {
console.log(data.status);
})
}]);
Ideally it should log the status as in $http request but I am unable to get it for $reource
In service testResponse
you can change your return statement to this
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;
}}
};
And in your controller's success method of then(success,error) of testResponse service you can access the status code using data.responseStatusCode
.
I have tested it on angularjs-1.2.32
and 1.5.7
.
['$http', '$resource', 'AppConfig', '$routeParams', '$rootScope',
function($http, $resource, $routeParams, $rootScope) {
You have missed AppConfig
parameter.
I tried use promises with $q to handle this kind of scenario where I had to have more control on failure or success. I refactored the factory like here:
var defObj = $q.defer();
var testResponse = $resource('https://jsonplaceholder.typicode.com/posts/1', {}, {
query: {
method: 'GET'
}
});
testResponse.query().$promise.then(function(data) {
//you can add anything else you want inside this function
defObj.resolve(data);
console.log(defObj, data);
}, function(error) {
//you can add anything else you want inside this function
console.error("Service failure: " + error);
});
return defObj.promise;
}
Here is the complete solution in this pen (uses mock json to simulate the response)
来源:https://stackoverflow.com/questions/27655598/how-can-i-get-status-code-using-resource