मैं एक परियोजना पर काम कर रहा हूं और लगभग एक घंटे से अधिक समय तक लोगों के साथ बहस करने के बाद। मैंने यह जानने का फैसला किया कि स्टैक-एक्सचेंज पर लोग क्या कह सकते हैं।
हम एक सिस्टम के लिए एक एपीआई लिख रहे हैं, एक क्वेरी है जिसे संगठन के एक पेड़ या गोल के एक पेड़ को वापस करना चाहिए।
संगठन का पेड़ वह संगठन है जिसमें उपयोगकर्ता मौजूद है, दूसरे शब्दों में, इस पेड़ को हमेशा मौजूद होना चाहिए। संगठन में, लक्ष्य का एक पेड़ हमेशा मौजूद होना चाहिए। (यहीं से बहस शुरू हुई)। ऐसे मामले में जहां पेड़ मौजूद नहीं है, मेरे सहकर्मी ने फैसला किया कि स्टेटस कोड 200 के साथ जवाब देना सही होगा। और फिर मुझसे अपना कोड ठीक करने के लिए कहने लगा क्योंकि पेड़ नहीं होने पर एप्लिकेशन अलग हो रहा था।
मैं आग की लपटों और रोष को रोकने की कोशिश करूँगा।
मैंने पेड़ नहीं होने पर 404 त्रुटि बढ़ाने का सुझाव दिया। यह कम से कम मुझे बताएगा कि कुछ गलत है। 200 का उपयोग करते समय, मुझे त्रुटियों को संभालने के लिए सफलता की कॉलबैक में अपनी प्रतिक्रिया के लिए विशेष जांच को जोड़ना होगा। मैं एक वस्तु प्राप्त करने की उम्मीद कर रहा हूं, लेकिन मैं वास्तव में एक खाली प्रतिक्रिया प्राप्त कर सकता हूं क्योंकि कुछ भी नहीं मिला है। प्रतिक्रिया को 404 के रूप में चिह्नित करना पूरी तरह से उचित लगता है। और फिर युद्ध शुरू हो गया और मुझे संदेश मिला कि मुझे HTTP स्थिति कोड स्कीमा समझ में नहीं आया। तो मैं यहाँ हूँ और पूछ रहा हूँ कि इस मामले में 404 में क्या गलत है? मुझे भी तर्क मिला "यह कुछ भी नहीं मिला , इसलिए 200 वापस करना सही है"। मेरा मानना है कि यह गलत है क्योंकि पेड़ हमेशा मौजूद होना चाहिए। अगर हमें कुछ नहीं मिला और हम कुछ उम्मीद कर रहे हैं, तो यह 404 होना चाहिए।
और जानकारी,
मैं उन उरोजों को जोड़ना भूल गया जो भ्रूण हैं।
संगठन
/OrgTree/Get
लक्ष्य
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
मेरी गलती, दोनों मापदंडों की आवश्यकता है। यदि कोई भी संस्करण जो किसी तारीख को पार्स किया जा सकता है, प्रदान किया जाता है, तो वह बंद संशोधन को वापस कर देगा। यदि आप अतीत में कुछ दर्ज करते हैं, तो यह पहला संशोधन लौटाएगा। यदि आईडी के साथ आईडी मौजूद नहीं है, तो मुझे संदेह है कि यह 200 के साथ एक खाली प्रतिक्रिया देने जा रहा है।
अतिरिक्त
इसके अलावा, मेरा मानना है कि समस्या का सबसे अच्छा जवाब यह है कि जब संगठन बनाए जाते हैं तो डिफ़ॉल्ट ऑब्जेक्ट बनाने के लिए, कोई भी पेड़ एक वैध मामला नहीं होना चाहिए और इसे एक अपरिभाषित व्यवहार के रूप में देखा जाना चाहिए। कोई तरीका नहीं है कि दोनों पेड़ों के बिना एक खाते का उपयोग किया जा सकता है। उस कारणों के लिए, उन्हें हमेशा मौजूद होना चाहिए।
मुझे भी यह जुड़ा हुआ मिला (एक समान लेकिन मैं इसे नहीं पा सकता)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
लौटना चाहिए ? सफलता नहीं, जैसा कि नामित संसाधन /GoalTree/GetById?versionId=CompletelyInvalidID
का शाब्दिक अर्थ नहीं मिला।