CURL कमांड लाइन URL पैरामीटर


186

मैं DELETECURL का उपयोग करके url पैरामीटर के साथ एक अनुरोध भेजने का प्रयास कर रहा हूं । मैं कर रहा हूँ:

curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'

हालाँकि, सर्वर पैरामीटर आईडी नहीं देख रहा है। 3. मैंने कुछ GUI एप्लिकेशन का उपयोग करने की कोशिश की और जब मैं url पास करता हूं:, http://localhost:5000/locations?id=3यह काम करता है। मैं वास्तव में इस GUI एप्लिकेशन के बजाय CURL का उपयोग करूंगा। क्या कोई कृपया बता सकता है कि मैं क्या गलत कर रहा हूं?

जवाबों:


269

"एप्लीकेशन / x-www-form-urlencoded" हेडर, क्यों? कोशिश करके देखो:

curl -X DELETE 'http://localhost:5000/locations?id=3'

या

curl -X GET 'http://localhost:5000/locations?id=3'

30
इसने काम कर दिया। मुझे बस एहसास हुआ कि पैरामीटर को स्वीकार करने के लिए URL को उद्धरणों के बीच होना चाहिए। कि MIME प्रकार एक URL के लिए है जो मापदंडों और GUI अनुप्रयोग का उपयोग करता है। इसके अलावा, मैं नहीं करना चाहता GET। मैं चाहता हूं DELETEऔर नहीं GETऔर मैं उचित रीस्ट डिजाइन मानकों का पालन करने की कोशिश कर रहा हूं, इसलिए मैं डिलीट करते समय DELETE का उपयोग कर रहा हूं और GET का नहीं।
डार्कस्की

1
मेरे मामले में यह केवल दोहरे उद्धरण के साथ काम करता है, कर्ल में एकल उद्धरण के साथ: (1) प्रोटोकॉल 'http समर्थित या अक्षम नहीं है लेकिन libcurl में "" उद्धरण ठीक काम करता है।
जेफ_अलीफसन 3

149

फेलिपस्मार्टिन सही है।

यह ध्यान देने योग्य है कि ऐसा इसलिए है क्योंकि आप वास्तव में -d / - डेटा विकल्प का उपयोग नहीं कर सकते हैं यदि यह एक POST अनुरोध नहीं है। लेकिन यह अभी भी संभव है यदि आप -G विकल्प का उपयोग करते हैं।

इसका मतलब है कि आप ऐसा कर सकते हैं:

curl -X DELETE -G 'http://localhost:5000/locations' -d 'id=3'

यहां यह थोड़ा मूर्खतापूर्ण है, लेकिन जब आप कमांड लाइन पर होते हैं और आपके पास बहुत सारे पैरामीटर होते हैं, तो यह बहुत टिडियर होता है।

मैं यह इसलिए कह रहा हूं क्योंकि cURL कमांड आमतौर पर काफी लंबे होते हैं, इसलिए यह लाइन ब्रेक से बचने वाली एक से अधिक लाइन पर इसे बनाने के लायक है।

curl -X DELETE -G \
'http://localhost:5000/locations' \
-d id=3 \
-d name=Mario \
-d surname=Bros

यदि आप zsh का उपयोग करते हैं तो यह स्पष्ट रूप से बहुत अधिक आरामदायक है। मेरा मतलब है कि जब आपको पिछली कमांड को फिर से संपादित करने की आवश्यकता होती है क्योंकि zsh आपको लाइन से लाइन पर जाने देता है। (बस केह रहा हू)

आशा करता हूँ की ये काम करेगा।


11
जीवन रक्षक! धन्यवाद दोस्त! मेरे पास एक स्क्रिप्ट है जहां मैं एक GET पर --data-urlencode का उपयोग करना चाहता हूं। इसने इसे बनाया इसलिए मुझे अपने मापदंडों को मैन्युअल रूप से url-encode करने की आवश्यकता नहीं है। धन्यवाद!
नाथन वालेस

3
क्या आप यह मान रहे हैं कि -X DELETE -G वास्तव में एक POST अनुरोध है?
1936

1
`-G, - URL में पोस्ट डेटा डालें और GET` नहीं का उपयोग करें, यह सिर्फ पोस्ट डेटा को url में जोड़ता है, -X [विधि] पूर्ववर्तीता लेता है (स्रोत: कर्ल-help और अनुभव)
DownloadPizza

यह इतना जटिल कैसे हो सकता है। कोई यह मान सकता है --data-urlencode कि URL में बिना किसी अपवाद के डेटा जोड़ा गया है, लेकिन अब आपको --getइसे वास्तव में काम करने के लिए इसके साथ संयोजित करने की आवश्यकता है ।
जाको १५'१
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.