google app engine - HTTP 204 के साथ प्राप्त करें कोई सामग्री नहीं: क्या यह सामान्य है




google-app-engine get (3)

204 कोई सामग्री नहीं

सर्वर ने अनुरोध पूरा कर लिया है लेकिन उसे इकाई-शरीर को वापस करने की आवश्यकता नहीं है, और शायद अद्यतन मेटाफॉर्मेशन वापस करना चाह सकता है। प्रतिक्रिया में मई या हेडर-हेडर के रूप में नए या अद्यतन मेटाफॉर्मेशन शामिल हो सकते हैं, जो वर्तमान में अनुरोधित संस्करण से जुड़ा होना चाहिए।

स्टेटस कोड 204 के लिए आरएफसी भाग के मुताबिक, मुझे जीईटी अनुरोध के लिए वैध विकल्प लगता है।

एक 404 Not Found , खाली शरीर के साथ 200 OK है और 204 No Content का बिल्कुल अलग अर्थ नहीं है, कभी-कभी हम उचित स्थिति कोड का उपयोग नहीं कर सकते हैं लेकिन नियमों को झुका सकते हैं और वे आपको एक दिन या बाद में काटने के लिए वापस आ जाएंगे । इसलिए, यदि आप उचित स्थिति कोड का उपयोग कर सकते हैं, तो इसका इस्तेमाल करें!

मुझे लगता है कि जीईटी या पोस्ट की पसंद बहुत व्यक्तिगत है क्योंकि उनमें से दोनों काम करेंगे लेकिन मैं आपको दो कारणों से जीईटी के बजाय पोस्ट रखने की सलाह दूंगा:

  • कोई कार्रवाई करने के लिए आप अन्य भाग (सर्वलेट अगर मैं सही ढंग से समझता हूं) चाहता हूं तो इससे कुछ डेटा पुनर्प्राप्त न करें।
  • डिफ़ॉल्ट रूप से GET अनुरोध कैश करने योग्य होते हैं यदि URL में कोई पैरामीटर मौजूद नहीं है, तो पोस्ट नहीं है।

क्या HTTP GET अनुरोध के लिए यह स्थिति सामान्य स्थिति 204 - No Content साथ प्रतिक्रिया करने के लिए एक सामान्य घटना है 204 - No Content ? जैसे, क्या HTTP जीईटी को पूरा करने के संबंध में यह अर्थात् सही है? मुझे पता है कि एक 204 - No Content HTTP पोस्ट अनुरोध के लिए 204 - No Content ठीक 204 - No Content है। अनुरोध प्राप्त करने के लिए, यदि कोई डेटा वापस नहीं भेजा जाना है, तो 204 स्टेटस कोड उचित है? क्या मुझे 404 का उपयोग करना चाहिए, या सफलता के लिए 200 तक रहना चाहिए, लेकिन खाली प्रतिक्रिया है?

इस प्रश्न का उपयोग केस जावा एप्लिकेशन है जिसे मैं Google App Engine के लिए लिख रहा हूं। मैं सर्वलेट को एक अनुरोध भेज रहा हूं, लेकिन क्लाइंट को वापस भेजा जाने वाला डेटा HTTP प्रतिक्रिया के बजाय चैनल एपीआई सॉकेट के माध्यम से प्रेषित किया जाएगा। वर्तमान में, मेरा ग्राहक अनुरोध निकाय में कोई सामग्री नहीं के साथ एक पोस्ट भेजता है, और चैनल एपीआई सॉकेट मतदान करने से पहले सर्वलेट से 204 प्रतिक्रिया की प्रतीक्षा करता है। चूंकि अनुरोध के शरीर में मुझे कोई डेटा नहीं भेजा जा रहा है, इसलिए मैं बहस कर रहा हूं कि क्या मुझे पोस्ट के बजाय जीईटी भेजने के लिए और अधिक समझदारी है।


204 के साथ पोस्ट / जीईटी पहली नजर में ठीक लगता है और यह भी काम करेगा।

दस्तावेज़ीकरण कहता है, 2xx - स्टेटस कोड का यह वर्ग इंगित करता है कि ग्राहक द्वारा अनुरोधित कार्रवाई को सफलतापूर्वक प्राप्त, समझ, स्वीकार और संसाधित किया गया था। जबकि 4xx - स्टेटस कोड का 4xx वर्ग उन स्थितियों के लिए है, जिनमें क्लाइंट खराब हो गया है।

चूंकि, अनुरोध सर्वर पर सफलतापूर्वक प्राप्त, समझ और संसाधित किया गया था। नतीजा यह था कि संसाधन नहीं मिला था। इसलिए, इस मामले में यह क्लाइंट साइड पर कोई त्रुटि नहीं थी या क्लाइंट ने मिटा नहीं दिया है।

इसलिए यह एक श्रृंखला 2xx कोड होना चाहिए और 4xx नहीं होना चाहिए। इस मामले में 204 (नहीं मिला) भेजना 404 या 410 प्रतिक्रिया से बेहतर होगा।


मैं एक RESTful संग्रह के साथ जीईटी / 204 का उपयोग करता हूं जो ज्ञात निश्चित लंबाई की स्थितित्मक सरणी है लेकिन छेद के साथ।

GET /items
    200: ["a", "b", null]

GET /items/0
    200: "a"

GET /items/1
    200: "b"

GET /items/2
    204:

GET /items/3
    404: Not Found




channel-api