2009-07-03 9 views
11

मैं आरईएसटी एपीआई जैसे नेटफ्लिक्स http://developer.netflix.com/docs/REST_API_Reference#0_59705 और ट्विटर के उदाहरण देख रहा हूं और वे प्रतिक्रिया टेक्स्ट के बजाय स्थिति टेक्स्ट हेडर प्रतिक्रिया में त्रुटि संदेश डालते हैं। हम एक आंतरिक रीस्टफुल एपीआई विकसित कर रहे हैं और मैं कस्टम स्थिति भेजने के लिए बहस कर रहा हूं और संदेश पाठ को अनदेखा कर रहा हूं।आरईएसटी सेवाओं पर त्रुटि संदेश वापस करने का सबसे अच्छा तरीका?

हमारे ऐप के दायरे के लिए, हम त्रुटि 400 लौट रहे हैं जब उपयोगकर्ता ने ऐसा कुछ करने की कोशिश की है जिसे वे नहीं मानते हैं, और उपयोगकर्ता के लिए UI में अपडेट किए जाने वाले एकमात्र त्रुटि संदेश वितरित किए जाएंगे 400. मुझे विश्वास है कि संदेश को एक संशोधित स्थिति के रूप में भेजा जाना चाहिए पाठ लेकिन इंजीनियरों में से एक (जो मेरे से आरईएसटी के बारे में थोड़ा कम जानता है) प्रतिक्रिया में भेजने के लिए बहस कर रहा है। पाठ।

जाने का सबसे अच्छा तरीका क्या है?

+0

यह एक डुप्लिकेट है: http://stackoverflow.com/questions/942951/rest-api-error-return-good-practices, आदि http://stackoverflow.com/search?q=[rest देखें ] त्रुटि। –

उत्तर

9

मुझे लगता है कि आप सही हैं, सामान्य दृष्टिकोण HTTP में निर्मित मौजूदा त्रुटि तंत्र का उपयोग करता है।

सामान्य रूप से, अपनी त्रुटियों को मौजूदा HTTP त्रुटियों में मैप करने का प्रयास करें, उदाहरण के लिए यदि वे उन चीज़ों का अनुरोध करते हैं जिनके पास अनुमति नहीं है, तो 403 त्रुटि लौटाएं।

वे कुछ है कि अस्तित्व में नहीं है अनुरोध करते हैं, वापसी एक 404.

  • एलेक्स
10

HTTP को परिभाषित करता है कि आप प्रतिक्रिया इकाई शरीर में एक वर्णनात्मक त्रुटि संदेश रखना चाहिए, उर्फ ​​responseText।

statusText किसी भी ग्राहक द्वारा प्रस्तुत या संसाधित नहीं किया जाता है।

मैं त्रुटि संदेश प्रकार, उर्फ ​​400 क्लाइंट त्रुटि, और उस समस्या के विवरण के लिए स्थिति टेक्स्ट का उपयोग करता हूं जो उपयोगकर्ता को प्रदान किया जा सकता है, जो भी क्लाइंट प्रक्रिया में सक्षम हो सकता है ।

संपादित करें: ध्यान दें कि तब से, एक मानक मानकीकृत प्रारूप क्लाइंट को मानक फैशन त्रुटि विवरण में संवाद करने के लिए मौजूद है, जिसे आप https://tools.ietf.org/html/rfc7807 पर पा सकते हैं और जो मैं अनुशंसा करता हूं।

0

अपने प्रतिक्रियाओं के लिए उचित स्थिति कोड चुनना अत्यंत महत्वपूर्ण है क्योंकि यह स्वयं वर्णनात्मक संदेशों का एक प्रमुख उत्साही है।

इकाई शरीर संसाधन के राज्य का प्रतिनिधित्व होना चाहिए और आदर्श अपने आवेदन

1

में उपलब्ध अगले राज्यों को हाइपरलिंक HTTP विनिर्देशन (rfc2616) के अनुसार: "HTTP स्थिति कोड एक्स्टेंसिबल हैं"

हालांकि मुझे नहीं लगता कि प्रत्येक अलग त्रुटि संदेश के लिए नई स्थिति बनाना सही दृष्टिकोण है:

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

0

एचटीपी स्थिति कोड बहुत आत्म व्याख्यात्मक हैं और इन्हें इस तरह इस्तेमाल किया जाना चाहिए। प्रमाणीकरण त्रुटियों के साथ 200 ठीक लौट रहा है सुंदर साबुन-वाई और भ्रामक है। कोई भी आरईएसटी क्लाइंट कार्यान्वयन 4xx और 5xx त्रुटियां एक त्रुटि ब्लॉक में जाती हैं और यह वास्तव में मामले के आधार पर निर्भर करती है यदि आप वास्तव में गैर 2xx प्रतिक्रियाओं के लिए प्रतिक्रिया निकाय का उपयोग करना चाहते हैं।

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