मेरी ऐप्लिकेशन में साथ प्रतिक्रिया मैं एक इंटरसेप्टर का उपयोग सभी http प्रतिक्रिया त्रुटियों को पकड़ने के लिए, जैसे:AngularJS: कस्टम 404 इंटरसेप्टर संभाल - यूआरएल
var response = function(response) {
if(response.config.url.indexOf('?page=') > -1) {
skipException = true;
}
return response;
}
var responseError = function(rejection) {
if (rejection.status === 401 || rejection.status === 403) {
/**/
}
else if (rejection.status >= 500 || rejection.status === 0) {
/**/
}
else if (rejection.status === 404 && !skipException) {
/**/
}
else if (rejection.status === 404 && skipException) {
/**/
}
else{
/**/
}
return $q.reject(rejection);
};
और जब मैं अपने नियंत्रक के पास जाओ (जब मेरे getArticles
विधि कुछ देता है डेटा, 404 नहीं - जब लेख सरणी खाली होती है) सब ठीक है: 404 skipException == true
पकड़ा गया है।
लेकिन जब मेरे लेख सरणी खाली होती है तो सर्वर 404 देता है और जब मैं इस नियंत्रक में प्रवेश करता हूं तो मुझे response.config.url
नहीं मिल सकता - कोई प्रतिक्रिया नहीं पकड़ी जाती है, लेकिन क्यों? मैंने सोचा कि इंटरसेप्टर सभी प्रतिक्रियाओं को पकड़ लेगा।
$timeout(function() {
$scope.getArticles();
}, 100);
और $scope.getArticles
इस तरह के कोड है:
getDataService.getArticles($scope.pageNum).then(function(response) {
/**/
});
सेवा:
var getEventsByScrollService = function(num) {
var deferred = $q.defer();
$http.get(***, {
})
.success(function(response) {
deferred.resolve(response);
}).error(function(err, status) {
if (status === 404){
deferred.resolve([]);
}
else{
deferred.reject(err);
}
});
return deferred.promise;
};
मैं कैसे सशर्त 404 का यूआरएल के आधार पर पकड़ कर सकते हैं? क्योंकि यह:
if(response.config.url.indexOf('?page=') > -1) {
हमेशा काम नहीं करता है।
यूआरएल द्वारा तर्क जांचना गलत लगता है। ऐसा लगता है कि अलग-अलग इंटरसेप्टर व्यवहारों के लिए आपके पास अलग-अलग सेवाएं और सेवा विधियां होनी चाहिए, सेवा विधियों को अलग-अलग इंटरसेप्टर्स को कॉल करना चाहिए जो विभिन्न त्रुटि समाधानों को कॉल करते हैं। त्रुटि समाधानकर्ताओं में से एक को 404 को संभालना चाहिए और दूसरे को 404 के अनदेखा करना चाहिए। सेवा विधि को यह तय करना चाहिए। एसओसी के उल्लंघन की तरह यूआरएल की आवाज़ के साथ युग्मन तर्क। –
क्या आप त्रुटि-प्रतिक्रिया – harishr
@DaveAlperovich का पूरा कोड साझा कर सकते हैं क्या आप मेरे मामले में विभिन्न इंटरसेप्टर के साथ उदाहरण प्रदान कर सकते हैं? – brabertaser19