.net आराम एपीआई: शरीर के साथ अनुरोध प्राप्त करें




rest asp.net-web-api (2)

एक सामान्य नियम के रूप में, REST में एक GET का विचार यह है कि आपके पैरामीटर यूआरएल में भेजे जाते हैं। चूंकि आपके द्वारा शामिल किए गए प्रश्न का उत्तर इंगित करता है, यह संभव है, लेकिन आरईएसटी के बिंदु को याद किया जाता है, जो एक सुसंगत वेबबीश अंतरफलक है। यदि आप अपने समापन बिंदु पर जटिल डेटा उत्तीर्ण करना चाहते हैं, तो आप संभवत: किसी POST का उपयोग करना चाहते हैं, जो आपके उपयोगकर्ताओं के लिए एक शरीर होने की अपेक्षा करेंगे। मैं उस कार्यान्वयन पर पुनर्विचार की सिफारिश करना चाहता हूं

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

मैं एक REST API को लागू करना चाहता हूं और मेरे GET अनुरोधों पर एक शरीर की आवश्यकता है (जैसा कि यहां चर्चा की गई है: अनुरोधित शरीर के साथ HTTP प्राप्त )

क्या वहाँ HTTP क्लाइंट हैं जो GET अनुरोध के साथ एक शरीर भेजने में सक्षम नहीं हैं? फिडलर ऐसा करने में सक्षम है, हालांकि संदेश बॉक्स लाल है


GET HTTP अनुरोधों में शरीर का उपयोग करने के लिए यह एक बुरा विचार है हां, ऐसा लगता है कि "डीजुर" HTTP जीआईटी शरीर हो सकता है, लेकिन "वास्तविक" आपको समस्याएं हो सकती हैं:

  1. क्लाइंट चौखटे / पुस्तकालयों के साथ इसके समर्थन का पता लगाना कठिन होगा
  2. सर्वर केवल GET अनुरोध के शरीर को अनदेखा कर सकता है। और वैसे भी यह मानक तरीका नहीं है, और सर्वर के साथ समस्या हो सकती है या इसकी कॉन्फ़िगरेशन है
  3. यह आपका कोड बनाता है, खासकर सर्वर साइड पर, दूसरों के लिए अस्पष्ट, क्योंकि कोई भी शरीर के साथ मिलने की उम्मीद नहीं करेगा

क्या आप मुश्किल तरीके से देख रहे हैं? शरीर के साथ जीने के साथ आपको इतने सारे नुकसान मिलेंगे। अन्य HTTP वर्ब का उपयोग क्यों नहीं करना है?

उदाहरण के लिए पद की तुलना में (या कुछ अन्य क्रिया) का उपयोग करें:

  1. यह पहले से ही तैयार ग्राहक लायब्रेरी के लिए आसान है,
  2. सर्वर या सर्वर कॉन्फ़िगरेशन के साथ कोई समस्या नहीं है,
  3. यह अन्य के लिए स्पष्ट है

कड़ी मेहनत के लिए मत देखो :)







frombodyattribute