HTTPInterceptor in AngularJS -
we have apis returns errors within reponse xmls instead of rejecting them , sending error responses. have next code handle them,
$http({ url: apiurl, method: "post", data: req, headers: oheaders, datatype: "xml", }) .success(function(data,status) { console.log('success!!!!!'); deff.resolve(data); }) .error(function(data,status) { console.log('this want see!!!!!'); deff.reject(data); }); myapp.factory('customhttpinterceptor', ['$q', function ($q) { homecoming function (promise) { homecoming promise.then(function (response) { var parsed; if (response.config.datatype == 'xml'){ parsed = $.xml2json(response.data); if (parsed) { angular.foreach(parsed, function(v, k) { if (k == 'status') { if (v.apierrors) { homecoming $q.reject(response); } } }); } console.log(parsed); } homecoming response; }, function (errresponse) { // on error console.log('error section in interceptor'); homecoming $q.reject(errresponse); }); }; }]); what expected when error identified within interceptor reject promise , command error section of $http , log "this want see!!!!!" message. instead show "success!!!!!" message.
is way works or doing wrong?
ish
i see several things seem wrong here :
returning result in foreach
angular.foreach(parsed, function(v, k) { if (k == 'status') { if (v.apierrors) { homecoming $q.reject(response); } } }); you wrote because you're used set return statements within loops. not work here, because you're returning within function body. there never reason homecoming in foreach body function: value not going used anything.
angular interceptor api
maybe didn't show in code, have register interceptor.
$httpprovider.interceptors.push('customhttpinterceptor'); what's more, interceptor not have right form : in case, should object response method returns promise of response response.
angularjs
No comments:
Post a Comment