2012-11-14 16 views
92

मैं कर्ल का उपयोग कर यूआरएल पैरामीटर के साथ DELETE अनुरोध भेजने की कोशिश कर रहा हूं। मैं कर रहा हूँ: http://localhost:5000/locations?id=3, यह काम करता है:कर्ल कमांड लाइन यूआरएल पैरामीटर

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

हालांकि, सर्वर पैरामीटर आईडी = 3. मैं कुछ जीयूआई आवेदन उपयोग करने की कोशिश और जब मैं के रूप में यूआरएल पारित देख पा रहा है। मैं वास्तव में इस जीयूआई आवेदन के बजाय कर्ल का उपयोग करूंगा। क्या कोई यह बता सकता है कि मैं क्या गलत कर रहा हूं?

उत्तर

149

"एप्लिकेशन/एक्स-www-form-urlencoded" हेडर, क्यों? इसे आजमाएं:

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

या

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

यह काम किया। मुझे अभी एहसास हुआ कि पैरामीटर स्वीकार करने के लिए यूआरएल उद्धरणों के बीच होना चाहिए। वह एमआईएमई प्रकार पैरामीटर वाले यूआरएल के लिए है और यह कि जीयूआई एप्लीकेशन क्या उपयोग करता है। इसके अलावा, मैं 'प्राप्त नहीं करना चाहता'। मैं 'हटाना' चाहता हूं और 'प्राप्त नहीं' करना चाहता हूं और मैं उचित आरईएसटी डिज़ाइन मानकों का पालन करने की कोशिश कर रहा हूं, इसलिए मैं हटा रहा हूं और हटाए जाने पर प्राप्त नहीं कर रहा हूं। – darksky

+1

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

73

Felipsmartins सही है।

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

कौन सा मतलब है कि आप यह कर सकते हैं:

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

यहाँ यह थोड़ा पागल है, लेकिन जब आप कमांड लाइन पर हैं और आप मानकों का एक बहुत कुछ है, यह एक बहुत tidier है।

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

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

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

उम्मीद है कि यह मदद करता है।

+6

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

+0

क्या आप इसका मतलब बता रहे हैं -X DELETE -G वास्तव में एक POST अनुरोध है? – huggie

-6

अपने पैरामीटर एक संख्या है, तो आप भी ऐसा कर सकते हैं:

curl -X DELETE localhost:5000/locations/3

जहाँ '3' अपने पैरामीटर है।

+6

यह पूरी तरह से सर्वर के कार्यान्वयन पर निर्भर करता है। – Tim

संबंधित मुद्दे