2012-02-19 9 views
10

जब कोई उपयोगकर्ता मेरे एपीआई (आमतौर पर जावास्क्रिप्ट + जेएसओएन के माध्यम से) को अमान्य डेटा सबमिट करता है, तो मुझे आश्चर्य है कि HTTP response code मुझे जवाब देना चाहिए।यदि कोई आरईएसटी एपीआई विधि विफल हो जाती है, तो क्या मुझे 200, 400, या 500 HTTP स्टेटस संदेश वापस करना चाहिए?

क्या मुझे त्रुटियों के साथ HTTP 200 प्रतिक्रिया वापस करनी चाहिए - या मेरे सर्वर को 400 या 500 त्रुटि के साथ प्रतिक्रिया देनी चाहिए क्योंकि अनुरोध वास्तव में कुछ खराब डेटा के कारण मेरी सत्यापन में विफल रहा है? wikipedia

हालांकि, एक बात ध्यान में रखना है -

यह एक 400 त्रुटि की तरह लगता है के बाद से जाने का रास्ता "स्थिति कोड के 4xx वर्ग ग्राहक लगता है, जिसमें मामलों के लिए है भटक गए हैं करने के लिए" है यह है कि ज्यादातर लोग jQuery जैसे ढांचे का उपयोग करते हैं, जिसके लिए आपको एक वैकल्पिक कॉलबैक निर्दिष्ट करने की आवश्यकता होती है जब AJAX अनुरोध 200 से अधिक किसी भी स्थिति कोड के साथ प्रतिक्रिया देते हैं।

+2

400 "सही" तरीका है, 200 "विनम्र" तरीका है। आप चुनते हैं। –

+0

[आरईएसटी HTTP स्टेटस कोड] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3290182/rest-http-status-codes) –

+0

वर्तमान में बहुत ही रोचक सवाल मैं एक खाली जेसन ऑब्जेक्ट देता हूं लेकिन शायद यह सही नहीं है एचटीटीपी प्रतिक्रिया कोड निकटतम 400 (खराब अनुरोध) होगा, इस पर अन्य विचारों को पढ़ने में रूचि है। – Dampsquid

उत्तर

7

400 खराब अनुरोध सर्वर द्वारा अनुरोध को समझ नहीं लिया जा सका विकृत वाक्यविन्यास। ग्राहक को संशोधन के बिना अनुरोध दोहराना नहीं चाहिए। jQuery ajax फोन करने में

उपयोग statusCode:

<html> 
<head> 
<title>jquery testing</title> 
<script type="text/javascript" src="jquery-1.6.2.min.js"/>"></script> 
<script language="javascript"> 
$(document).ready(
    function(){ 
     $('#linkClick').click(
      function(){ 
        $.ajax({ 
         url: 'a.html', 
         data: {}, 
         type: 'get', 
         dataType: 'json', 
         statusCode: { 
          404:function() { alert("404"); }, 
          200:function() { alert("200"); }, 
          201:function() { alert("201"); }, 
          202:function() { alert("202"); } 
         }, 
         success: function(data) { 
          alert("Status: " + data); 
         } 
        }); 
       }); 
     } 
     ); 
</script> 
</head> 
<body> 
<a href="#" id="linkClick">click</a> 
</body> 
</html> 
+1

ग्राहक को प्रत्येक एकल स्थिति कोड को संभालने की उम्मीद करने के लिए भारी लगता है। –

+1

बहुत अच्छा ग्राहक उत्तर horaceman। हालांकि, चूंकि @Laurent, एक वैध बिंदु प्रतीत होता है। शायद सही, और यथार्थवादी के बीच एक सुखद माध्यम केवल दो स्टेटस कोड को लागू करना है जो सभी अड्डों को कवर करते हैं। 500, 400, 404, और 200 नौकरी करना चाहिए। क्लाइंट को केवल 400 और 200 को लागू करने की आवश्यकता है। 404 को कोड को कभी भी उत्पादन करने से पहले देखा जाना चाहिए और यदि नहीं, या डिफ़ॉल्ट त्रुटि हैंडलर द्वारा वास्तविक सर्वर त्रुटि (500) पकड़ी जा रही है। – Xeoncross

+2

@ this.lau_ आपको हर त्रुटि कोड को संभालने की आवश्यकता नहीं है। एक साधारण 'कोड! = 200' पर्याप्त होगा। लेकिन ज्यादातर समय मैं उम्मीद करता हूं कि ग्राहक उपयोगकर्ता को सार्थक प्रतिक्रिया देना चाहेंगे। –

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

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