क्लाइंट लगातार 'एप्लीकेशन / जॉन्स' के एक्सेप्ट हेडर और 'एप्लीकेशन / जसन' के कंटेंट-टाइप के साथ अनुरोध करता है
हां, यह सही बात है, लेकिन इसका मतलब यह नहीं है कि विक्रेता परवाह करता है। जबकि मैं आपकी निराशा को पूरी तरह से समझता हूं, क्योंकि मुझे भी लगता है कि JSON सेवा को हमेशा JSON प्रतिक्रिया देनी चाहिए, लेकिन कई उदाहरण हैं जहां ऐसा नहीं है।
परियोजना के दौरान यह एक ही अभ्यास दो अलग-अलग विक्रेताओं और दो अलग-अलग सेवाओं में लागू किया गया है। मैंने खुद को यह बताना चाहा कि सेवाओं को बदलने की आवश्यकता क्यों है। विक्रेताओं ने कहा कि ग्राहक को इसके साथ सामना करना चाहिए और यहां तक कि मेरी पसंद की REST लाइब्रेरी (रेस्टएसी) पर भी सवाल उठाया गया है क्योंकि यह डिफ़ॉल्ट रूप से 'बॉक्स आउट' से सामना नहीं करता है।
खैर, मुझे विक्रेता के साथ सहमत होना होगा। यह उनकी सेवा है और जब तक वे इसे उपयोग करने के लिए विशेष मामलों को स्पष्ट रूप से दस्तावेज करते हैं, तब आप वास्तव में यह नहीं कह सकते हैं कि वे इसे बदलते हैं। यह उनके लिए एक नुकसान है क्योंकि डेवलपर्स अपने एपीआई को अपनाने के लिए धीमा होंगे, और यदि वे सुनते हैं कि डेवलपर्स को क्या चाहिए तो वे इसे बदल देंगे, लेकिन दुख की बात है कि कोई नियम नहीं है कि उन्हें मानकों का पालन करना चाहिए।
सवाल यह है कि क्या मुझे कुछ याद आ रहा है?
अनुरोध शीर्षलेखों का मतलब कुछ भी नहीं है जब तक कि वे दूसरे छोर पर सही ढंग से बाधित न हों। मुझे पता है कि अगर मैं PHP का उपयोग करके एक वेब एपीआई विकसित करता हूं, तो अनुरोध हेडर के साथ नरक में। मैं जो चाहूं, उसका जवाब दे सकता हूं। जबकि, C के साथ IIS में कॉन्फ़िगर की गई सेवा अनुरोध हेडर, उनके प्रकार और प्रतिक्रिया प्रकार को संभालने में बहुत आसान प्रदान करती है। एपीआई का निर्माण करने के लिए विक्रेता द्वारा उपयोग किए जाने वाले उपकरणों के साथ इसका बहुत कुछ करना है।
क्या मुझे इस बारे में पांडित्य हो रहा है?
हां और नहीं, मेरे पास डेवलपर मित्र हैं जो इस अतीत को आगे बढ़ाने में असमर्थ होंगे। जब तक एपीआई काम करने की उम्मीद नहीं कर लेगा, तब तक वे समस्या से ठीक हो जाएंगे और अन्य कार्यों में असमर्थ होंगे। अब वह पांडित्यपूर्ण हो रहा है।
यह एक समस्या है क्योंकि विक्रेता ने आपके कार्यों को पूरा करने के लिए "अधिक काम" बनाया है। इससे किसी को भी निराशा होती होगी। मैं जानता हूँ की मैं होंगा।
क्या JSON API होना ठीक है, जिसमें इस परिदृश्य में एप्लिकेशन / json की सामग्री-प्रकार नहीं है?
बिल्कुल, लेकिन यह एक अच्छा अभ्यास नहीं है।
एक क्लाइंट केवल सर्वर को बता सकता है कि संदर्भ का प्रकार क्या request
है। इसमें सामग्री के लिए सामग्री-प्रकार लागू करने की कोई क्षमता नहीं है response
। क्लाइंट केवल सर्वर को सूचित कर सकता है कि यह accept
संभावित सामग्री-प्रकारों का एक संग्रह होगा ।
हेडर फील्ड परिभाषाएँ
कुछ मीडिया प्रकारों को निर्दिष्ट करने के लिए स्वीकार अनुरोध-हेडर फ़ील्ड का उपयोग किया जा सकता है जो प्रतिक्रिया के लिए स्वीकार्य हैं। स्वीकार हेडर का उपयोग यह इंगित करने के लिए किया जा सकता है कि अनुरोध विशेष रूप से वांछित प्रकारों के एक छोटे सेट तक सीमित है, जैसा कि इन-लाइन छवि के लिए अनुरोध के मामले में है।
क्लाइंट के लिए छवि का अनुरोध करना संभव है image/jpeg
, लेकिन सर्वर प्रतिक्रियाएं text/html
और 404
छवि कोड नहीं मिलने पर स्थिति कोड के साथ । सर्वर गलत तरीके से जवाब भी दे सकते हैं। वहाँ कई वर्डप्रेस वेबसाइटें हैं जो फाइलों text/html
के 200
लिए स्टेटस कोड और स्टेटस कोड के साथ नहीं मिली हैं।
अब वह सब BAD प्रैक्टिस सर्वर के हिस्से पर है। जो मैं आपको बताने की कोशिश कर रहा हूं वह यह है कि यह बिल्कुल संभव है, और अक्सर होता है। जब वे इन चीजों को कॉन्फ़िगर करते हैं तो लोग नहीं जानते कि वे क्या कर रहे हैं।
संदर्भ की सराहना की जाएगी। आप वाणिज्यिक दृष्टिकोण से इस स्थिति को कैसे हल करते हैं?
मैं कुछ परियोजनाओं पर इस समस्या में चला गया हूँ। आप post
JSON सर्वर को डेटा और यह या तो JSON या HTML प्रतिक्रिया देता है।
यह जानना वास्तव में कोई बड़ी बात नहीं है कि प्रतिक्रिया में कौन सा प्रकार था। यदि पहला चरित्र है {
या [
आप JSON मान सकते हैं। यदि यह <
आप HTML मान सकते हैं। मैंने इसे अतीत में कैसे संभाला है। कभी-कभी एपीआई लिखने वाले प्रोग्रामर को एचटीटीपी हेडर के बारे में सब पता होता है। text/html
प्रतिक्रिया के रूप में सब कुछ वापस आ जाता है । यदि आप भाग्यशाली हैं तो उनके पास अपाचे को डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है text/plain
जो कभी-कभी मदद कर सकता है।
ये समस्याएं मौजूद हैं और भविष्य में भी दूर तक मौजूद रहेंगी। सर्वर टू सर्वर संचार अब तक एक अनियमित गतिविधि है। ऐसा कोई शासी निकाय नहीं है जो किसी विक्रेता से खराब HTTP प्रतिक्रिया देने वाले सर्वर के लिए यूनियन से वेंडर को बाहर निकाल देगा।