2013-03-09 5 views
7

मैं एक आरामदायक एपीआई लिख रहा हूं और मुझे त्रुटि संदेश वापस करना है, लेकिन मुझे यकीन नहीं है कि किस मार्ग पर जाना है।क्या स्थायी त्रुटि प्रतिक्रियाओं में HTTP स्थिति का उपयोग किया जाना चाहिए?

रूट 1 - HTTP स्थिति

उपयोग HTTP त्रुटि स्थिति जब ग्राहक भेजता बुरा डेटा

उदाहरण के लिए: 401 - नहीं अधिकृत, 410 - मॉडल मौजूद नहीं है, 412 - मॉडल Validaiton त्रुटि, आदि

मार्ग 2 - JSON सफलता या त्रुटि विफलता

एपीआई json वापस आती है और मैं के साथ सब कुछ लौटने पर विचार कर रहा हूँ http हेडर 200, लेकिन फिर मेरे JSON संभाल त्रुटियों और सफलता

पूर्व: {"स्थिति": "त्रुटि", "संदेश": "मॉडल सत्यापन त्रुटि", "डेटा": ["उपयोगकर्ता नाम आवश्यक" , "उपयोगकर्ता ईमेल आवश्यक"]}

मुझे किस मार्ग पर जाना चाहिए और क्यों? फायदे और नुकसान।

उत्तर

12

मैं एक RESTful API लिख रहा हूँ और मैं त्रुटि संदेश वापस जाने के लिए है, लेकिन मैं यकीन है कि जो मार्ग पर जाने के लिए नहीं कर रहा हूँ।

रूट 1 - HTTP स्थिति

उपयोग HTTP त्रुटि स्थिति जब ग्राहक बुरा डेटा

HTTP स्थिति कोड भेजता बिल्कुल किसी भी वेब सेवा लागू करने में इस्तेमाल किया जा होने का दावा करना चाहिए RESTful। विनिर्देश का मूल सिद्धांत प्रतिनिधित्वकारी स्थिति के हस्तांतरण को पूर्ण रूप से समर्थन देने के लिए वेब का विस्तार और विस्तार कर रहा है। मौजूदा वेब बुनियादी ढांचे के साथ बातचीत के लिए अनुमति देने के लिए एक आरईएसटी कार्यान्वयन उचित HTTP स्थिति कोड के माध्यम से अनुरोधों की स्थिति इंगित करना चाहिए। उदाहरण के लिए: - ठीक है
201 - सामग्री बनाया
401 - अनधिकृत
403 - निषिद्ध
500 - सर्वर त्रुटि
501 -

200 लागू नहीं

इन स्थितियों में से कई के साथ जवाब जब , प्रतिक्रिया प्रणाली में इकाई प्रतिनिधित्व को शामिल करने के लिए HTTP विनिर्देशन द्वारा इसकी अनुमति भी दी गई है। 'सामान्य', गैर-त्रुटि प्रतिक्रियाओं के मामले में, यह प्रतिनिधित्व सामान्य रूप से उस इकाई का होगा जो HTTP अनुरोध द्वारा 'संचालित' किया जा रहा है। त्रुटि प्रतिक्रिया के मामले में प्रतिनिधित्व, यदि शामिल है, तो हुई त्रुटि पर अधिक जानकारी प्रदान करनी चाहिए। यह वह जगह है जहां हम आपके विकल्प 2 पर जाते हैं।

मार्ग 2 - JSON सफलता या त्रुटि विफलता

एपीआई json वापस आती है और मैं साथ HTTP हेडर 200 सब कुछ लौटने पर विचार कर रहा हूँ, लेकिन फिर मेरी JSON संभाल त्रुटियों और सफलता में

आपको सभी प्रतिक्रियाओं के लिए बिल्कुल 200 ओके वापस नहीं करना चाहिए। कई अच्छी तरह से लागू HTTP क्लाइंट प्रतिक्रिया में स्थिति कोड पर निर्भर करता है ताकि यह सफल हो या न हो। हमेशा 200 ओके के साथ प्रतिक्रिया देने से तीसरे पक्ष के क्लाइंट पुस्तकालयों को आने वाले डेटा को गलत तरीके से संसाधित करने का कारण बन सकता है, और यह निर्धारित करने के लिए कि क्या कोई त्रुटि वास्तव में हुई या नहीं, यह निर्धारित करने के लिए आपके ग्राहक पर प्रतिक्रिया निकाय को एक आवश्यकता भी डालती है।

यह कहकर कि, हुई त्रुटि के बारे में अतिरिक्त जानकारी जोड़ना बहुत उपयोगी हो सकता है, इसलिए निश्चित रूप से इसे प्रतिक्रिया निकाय में जोड़ने पर विचार करें। आपका प्रस्तावित प्रारूप ठीक दिखता है, हालांकि ईमानदार होने के लिए status तत्व अनावश्यक है, मानते हुए कि आप उचित रूप से HTTP स्टेटस कोड का उपयोग करते हैं। कुछ और पसंद है:

{ 
    "message": "Model validation error", 
    "data": [ 
     "user name required", 
     "user email required" 
    ] 
} 
संबंधित मुद्दे