इसके लायक मैं इसके लिए अलग तरीके से काम करता हूं। एक सफल कॉल में सिर्फ JSON ऑब्जेक्ट हैं। मुझे एक उच्च स्तर की JSON ऑब्जेक्ट की आवश्यकता नहीं है जिसमें एक सफल फ़ील्ड है जो सच को दर्शाता है और एक पेलोड फ़ील्ड जिसमें JSON ऑब्जेक्ट है। मैं सिर्फ हेडर में HTTP स्टेटस के लिए 200 की रेंज में जो भी उपयुक्त हो JSON ऑब्जेक्ट को वापस करता हूं।
हालाँकि, अगर कोई त्रुटि है (400 परिवार में कुछ) मैं एक अच्छी तरह से बनाई गई JSON त्रुटि ऑब्जेक्ट वापस करता हूं। उदाहरण के लिए, यदि ग्राहक एक ईमेल पते और फोन नंबर के साथ एक उपयोगकर्ता पोस्ट कर रहा है और इनमें से एक विकृत है (यानी मैं इसे अपने अंतर्निहित डेटाबेस में सम्मिलित नहीं कर सकता) तो मैं कुछ इस तरह वापस आऊंगा:
{
"description" : "Validation Failed"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Invalid phone number."
} ],
}
यहाँ महत्वपूर्ण बिट्स हैं कि "फ़ील्ड" संपत्ति को JSON फ़ील्ड से बिल्कुल मेल खाना चाहिए, जिसे मान्य नहीं किया जा सकता है। यह ग्राहकों को यह जानने की अनुमति देता है कि उनके अनुरोध के साथ क्या गलत हुआ। इसके अलावा, "संदेश" अनुरोध के स्थान पर है। यदि दोनों "emailAddress" और "phoneNumber" अमान्य थे, तो "त्रुटियों" सरणी में दोनों के लिए प्रविष्टियाँ होंगी। 409 (संघर्ष) JSON प्रतिक्रिया निकाय इस तरह दिख सकता है:
{
"description" : "Already Exists"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Phone number already exists for another user."
} ],
}
HTTP स्टेटस कोड और इस JSON क्लाइंट के पास वे सभी हैं जो उन्हें एक नियत तरीके से त्रुटियों का जवाब देने की आवश्यकता है और यह एक नया त्रुटि मानक नहीं बनाता है जो HTTP स्थिति कोड को बदलने का प्रयास करता है। ध्यान दें, ये केवल 400 त्रुटियों की सीमा के लिए होते हैं। 200 रेंज में किसी भी चीज के लिए मैं सिर्फ वही वापस कर सकता हूं जो उपयुक्त है। मेरे लिए यह अक्सर एक HAL की तरह JSON ऑब्जेक्ट है, लेकिन वास्तव में यहाँ कोई फर्क नहीं पड़ता।
जोड़ने के बारे में मैंने जो सोचा था वह एक संख्यात्मक त्रुटि कोड था या तो "त्रुटियों" सरणी प्रविष्टियों या स्वयं JSON ऑब्जेक्ट की जड़ में। लेकिन अभी तक हमें इसकी जरूरत नहीं है।