मैं एक एपीआई डिजाइन कर रहा हूं और मुझे आश्चर्य है कि जीईटी अनुरोध पर JSON पेलोड भेजने के लिए ठीक है या नहीं?HTTP अनुरोध पेलोड प्राप्त करें
यह अन्य प्रश्न Payloads of HTTP Request Methods में, हम this link के अनुसार पा सकते हैं:
- प्रमुख - कोई परिभाषित शरीर अर्थ विज्ञान।
- प्राप्त करें - कोई परिभाषित शरीर अर्थशास्त्र नहीं।
- पुट - बॉडी समर्थित है।
- पोस्ट - बॉडी समर्थित है।
- DELETE - कोई परिभाषित शरीर अर्थशास्त्र नहीं।
- ट्रेस - बॉडी समर्थित नहीं है।
- विकल्प - बॉडी समर्थित है लेकिन कोई अर्थशास्त्र नहीं (शायद भविष्य में)।
क्या इसका मतलब है कि मुझे एक पेलोड के साथ एक GET अनुरोध नहीं भेजना चाहिए? क्या ऐसा करने के जोखिम हैं?
- कुछ HTTP क्लाइंट पुस्तकालयों को ऐसे पेलोड भेजने में असमर्थ होने की तरह?
- या मेरा जावा एपीआई कोड कुछ एप्लिकेशन सर्वर पर पोर्टेबल नहीं है?
- और कुछ और?
मुझे पता चला कि ElasticSearch GET अनुरोध पर इस तरह के एक पेलोड उपयोग कर रहा था:
$ curl -XGET 'http://localhost:9200/twitter/tweet/_search?routing=kimchy' -d '{
"query": {
"filtered" : {
"query" : {
"query_string" : {
"query" : "some query string here"
}
},
"filter" : {
"term" : { "user" : "kimchy" }
}
}
}
}
'
तो यह लोकप्रिय पुस्तकालय यह करता है और कोई भी शिकायत है, तो शायद मैं भी ऐसा कर सकते हैं?
वैसे, मुझे पता है कि अगर यह क्वेरी स्ट्रिंग पैरामीटर और JSON पेलोड मिश्रण करने के लिए ठीक है चाहते हैं? बिल्कुल इस लोचदार खोज क्वेरी की तरह करता है। यदि हां, तो वहाँ के नियम हम जानते हैं ताकि जो तर्क पैरामीटर या पेलोड पैरामीटर क्वेरी स्ट्रिंग किया जाना चाहिए रहे हैं?
यहाँ हम पढ़ सकते हैं: GET अनुरोध के साथ एक शरीर सहित लगभग HTTP GET with request body
रॉय फील्डिंग की टिप्पणी।
हां। दूसरे शब्दों में, किसी भी HTTP अनुरोध संदेश को संदेश निकाय रखने की अनुमति है, और इस प्रकार संदेशों को ध्यान में रखना चाहिए। प्राप्त के लिए सर्वर अर्थ विज्ञान, हालांकि, इस तरह के प्रतिबंधित कर रहे हैं कि एक शरीर, यदि कोई हो, अनुरोध करने के लिए कोई अर्थ अर्थ नहीं है। पार्स पर आवश्यकताओं विधि अर्थ विज्ञान पर आवश्यकताओं से अलग हैं।
तो, हाँ, यदि आप एक शरीर मिलता है के साथ भेज सकते हैं और नहीं, यह के लिए उपयोगी नहीं है ऐसा करते हैं।
यह HTTP/1.1 के स्तरित डिज़ाइन का हिस्सा है जो spec विभाजन के बाद फिर से स्पष्ट हो जाएगा (प्रगति पर काम)।
.... रॉय
तब मैं वास्तव में समझ में नहीं आता क्यों यह कभी नहीं उपयोगी है, क्योंकि यह मेरी राय में समझ में आता है कि सर्वर queryParam पर अच्छी तरह से फिट नहीं हैं करने के लिए जटिल क्वेरी भेजने के लिए या मैट्रिक्स पैराम। मुझे लगता है कि ElasticSearch एपीआई डिजाइनरों एक ही लगता है ...
मैं एक एपीआई जो इस तरह कहा जा सकता है डिजाइन करने के लिए योजना बना रहा हूँ:
curl -XGET 'http://localhost:9000/documents/inbox?pageIndex=0&pageSize=10&sort=title'
curl -XGET 'http://localhost:9000/documents/trash?pageIndex=0&pageSize=10&sort=title'
curl -XGET 'http://localhost:9000/documents/search?pageIndex=0&pageSize=10&sort=title' -d '{
"someSearchFilter1":"filterValue1",
"someSearchFilter2":"filterValue2",
"someSearchFilterList": ["filterValue3","xxx"]
... a lot more ...
}
'
यह आप पर ठीक लग रहा है? उपरोक्त विचारों के आधार पर।
एक जोखिम हो सकता है कि क्लाइंट लाइब्रेरी पेलोड एक जीई में भेजे जाने के लिए अनुमति नहीं होगी टी अनुरोध मुझे यह भी एहसास नहीं हुआ कि आप इसे ईमानदारी से कर्ल के साथ कर सकते हैं। – bdkosher