कर्ल के साथ एक PUT अनुरोध कैसे करें?


412

मैं कर्ल का उपयोग करके एक RESTful PUT (या DELETE) विधि का परीक्षण कैसे करूं?

जवाबों:


566

-Xआप जो भी HTTP क्रिया चाहते हैं उसके साथ ध्वज का उपयोग करना:

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

यह उदाहरण -dआपके PUT अनुरोध के साथ तर्क प्रदान करने के लिए ध्वज का उपयोग करता है ।


17
"man curl" on -X: "आम तौर पर आपको इस विकल्प की आवश्यकता नहीं होती है। सभी प्रकार के GET, HEAD, POST और PUT अनुरोधों को समर्पित कमांड लाइन विकल्पों का उपयोग करके लागू किया जाता है।" लेकिन मुझे दूसरा रास्ता नहीं मिला।
मार्टिन सी। मार्टिन

44
एक साल बाद, मुझे एक रास्ता मिला! कर्ल-टी
मार्टिन सी। मार्टिन

2
जैसा कि मार्टिन सी। मार्टिन का उत्तर भी सर्वर से रीडायरेक्ट के बाद GET में बदल जाता है, यह मेरी राय में अधिक उपयोगी उत्तर है।
मार्टिन 10

2
GETरीडायरेक्ट के बाद प्राप्त करने के लिए , पैरामीटर जोड़ें--location
मार्टिन एम

1
कर्ल 7.47 और यह मेरे लिए काम नहीं करेगा। थाइब्रा का उत्तर हमेशा व्यवहार को पोस्ट करने में चूक करता है। भूल जाओ (या -G) हालांकि -d (--data) फ़ील्ड को url पैरामीटर बनने के लिए बाध्य करेगा और काम करेगा।
जेम्स पॉवेल

101

शीघ्र जवाब:

एक ही पंक्ति में, कर्ल कमांड होगा:

a) यदि फॉर्म डेटा भेज रहा है:

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

ख) यदि रॉसन के रूप में कच्चा डेटा भेजना है:

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

ग) यदि कोई डाक अनुरोध के साथ फाइल भेज रहा है:

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

दूसरा तरीका:

समकक्ष CURL अनुरोध प्राप्त करने के लिए आप Chrome स्टोर से POSTMAN ऐप का उपयोग कर सकते हैं । अधिक जटिल अनुरोध लिखते समय यह विशेष रूप से उपयोगी है।

अन्य स्वरूपों के साथ या जावा, पीएचपी जैसे विभिन्न ग्राहकों के अनुरोध के लिए, आप नीचे पोस्ट / टिप्पणी देख सकते हैं।

पोस्ट कोड प्राप्त करने के लिए POSTMAN


4
पता नहीं क्यों इसे डाउनवोट किया गया है ... मैंने इस विचार की प्रतिलिपि बनाई कि कर्ल पीयूट के लिए JSON बॉडी को कैसे पास किया जाए। इसके अलावा डाकिया बहुत अधिक जटिल प्रश्नों के लिए कर्ल कोड प्राप्त करने के लिए बहुत बढ़िया उपकरण है :)
मिकेल लेपिस्टो

2
धन्यवाद !! यहां तक ​​कि मुझे कोई भी अंदाजा नहीं है कि चढ़ाव के बारे में क्यों। इसे अपनाने के लिए उपयोगकर्ताओं की अनिच्छा हो सकती है। मैंने POSTMAN में मोबाइल के लिए अपने सभी REST एप का एक उत्तर बनाया है और यह सबसे अच्छी उत्पादकता टिप है जो मैं REST के साथ काम करने वाले किसी भी व्यक्ति को सुझा सकता हूं।
प्रीतेक

वास्तविक विश्व उदाहरण जहां मैं अंतिम बिंदु में json डेटा और पैरामीटर पास कर रहा हूं; कर्ल -X PUT -H "कंटेंट-टाइप: एप्लिकेशन / जसन" -d '{"राशि": "999", "टाइप": "कार", "पेरेंट_ड": "12345"}' लोकलहोस्ट: 8080 / लेन-देन सेवा / लेनदेन / 2222
विक्रमवी

1
पूरा ब्राउज़र स्थापित करना (यदि किसी के पास Chrome नहीं है) और इसके लिए एक एक्सटेंशन कुछ लोगों के लिए एक ओवरकिल हो सकता है। कम से कम आप फ़ायरफ़ॉक्स जैसे एक और अधिक सामान्य (डिफ़ॉल्ट स्थापना) वेब ब्राउज़र के लिए एक विकल्प प्रदान कर सकते थे, जहां HttpRequester एक समान काम करता है।
rbaleksandar

5
यह अस्वीकृत हो सकता है क्योंकि प्रश्न कर्ल के बारे में है।
tuxayo

28

मार्टिन सी। मार्टिन की टिप्पणी के बाद एक उदाहरण PUT:

curl -T filename.txt http://www.example.com/dir/

साथ -T(एक ही रूप में --upload-file) कर्ल HTTP के लिए PUT का प्रयोग करेंगे।


8
दुर्भाग्य से, अगर आप के साथ या मापदंडों को निर्दिष्ट करना चाहते हैं तो -Tकोई विकल्प नहीं है । PUT के माध्यम से फ़ाइल की सामग्री भेजता है। रीडायरेक्ट के बाद प्राप्त करने के लिए -X PUT-d-F-TGET--location
मार्टिन एम

क्या होगा अगर filename.txt रिमोट सर्वर में है?
बोसरी

7
curl -X PUT -d 'new_value' URL_PATH/key

कहाँ पे,

X - अनुरोध अनुरोध के लिए उपयोग किया जाने वाला विकल्प

d - रिमोट यूआरएल पर डेटा डालने के लिए उपयोग किया जाने वाला विकल्प

URL_PATH - दूरस्थ url

new_value - मान जो हम सर्वर की कुंजी में रखना चाहते हैं


5

मुझे इस धागे के लिए देर हो गई है, लेकिन मुझे भी इसी तरह की आवश्यकता थी। चूंकि मेरी स्क्रिप्ट गतिशील रूप से कर्ल के लिए अनुरोध का निर्माण कर रही थी, इसलिए मुझे GET, POST और PUT में कमांड की समान संरचना चाहिए थी।

यहाँ मेरे लिए क्या काम करता है

के लिए PUT अनुरोध:

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

के लिए पोस्ट का अनुरोध:

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

के लिए प्राप्त अनुरोध:

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.