Wednesday, 15 August 2012

HTTPInterceptor in AngularJS -



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