2016-04-11 14 views
5

के लिए से निपटने त्रुटि मैं http त्रुटि हैंडलिंग रणनीति angular.io प्रलेखन में प्रयोग किया जाता का उपयोग कर रहा हूँ:उचित कोणीय 2 http परिणाम

getHeroes() { 
    return this.http.get(this._heroesUrl) 
        .map(res => <Hero[]> res.json().data) 
        .catch(this.handleError); 
    } 
    private handleError (error: Response) { 
     console.error(error); 
     return Observable.throw(error.json().error || 'Server error'); 
    } 
} 

कुछ स्थितियों में, एक JSON प्रतिक्रिया के बजाय मैं एक 204 प्राप्त होगा स्थिति कोड (कोई डेटा नहीं)। इस मामले में, res.json() के माध्यम से परिणाम को पार्स करने में असफल होने तक त्रुटि हैंडलर को तब तक नहीं जोड़ा जाता है, इसलिए हैंडलर त्रुटि को पास किया गया है "error.json कोई फ़ंक्शन नहीं है"

200 (ठीक) स्थिति कोड या "हेडर/जेसन" के प्रतिक्रिया हेडर सामग्री-प्रकार की प्रतिक्रिया के लिए प्रतिक्रिया स्ट्रीम से पूछताछ कैसे कर सकता हूं, और अधिक प्रासंगिक त्रुटि संदेश के साथ एक त्रुटि हैंडलर सिग्नल कर सकता हूं?

+0

धन्यवाद, मुझे लगता है कि एक चूक के लिए फेंक दिया है। इस पर आने वाले किसी और के लिए, कृपया ध्यान दें कि अल्फा 47 के बाद त्रुटि प्रबंधन व्यवहार केवल 200 से ऊपर और 2 9 2 से ऊपर के स्टेटस कोड पर लागू होता है। चूंकि मेरा स्टेटस कोड 204 (नहीं मिला) है, इसलिए मुझे अभी भी त्रुटि को मैन्युअल रूप से फेंकने की आवश्यकता है "अल्फा 46 और नीचे"। – gxclarke

+0

एर, HTTP प्रतिक्रिया 204 "कोई डेटा नहीं" ("नहीं मिला" 404 है)। –

+0

हां, क्षमा करें मेरा मतलब "कोई डेटा नहीं" था। – gxclarke

उत्तर

8
http .get('Some Url') .map(res => { 
// If request fails, throw an Error that will be caught 
if(res.statu != 200) { 
throw new Error('This request has failed ' + res.status); } // If everything went fine, return the response 
else {return res.json(); 
} }) 

यह आपकी मदद कर सकता है।

यह केवल समझने के लिए है कि प्रतिक्रिया से स्थिति का उपयोग कैसे करें, आप अपनी आवश्यकता के अनुसार संशोधित कर सकते हैं।

त्रुटि केवल गैर 200 कोड की जांच इस commit

संबंधित मुद्दे