cURL एक पैकेज है जिसमें रिमोट सर्वर के बीच डेटा स्थानांतरित करने के लिए विभिन्न उपकरण हैं। यह FTP, Windows शेयर, मेल सर्वर, और निश्चित रूप से HTTP का उपयोग करके वेब सर्वर का समर्थन करता है।
Linux शेल से फ़ाइल डाउनलोड करना आमतौर पर cURL कमांड का उपयोग करके इस तरह पूरा किया जाता है:
curl https://example.org/file.zip --output file.zip
यह GET विधि का उपयोग करके फ़ाइल का अनुरोध करता है और बस इसे डाउनलोड करता है।
यह लेख विस्तार से बताएगा कि फॉर्म डेटा सहित POST अनुरोध करने के लिए cURL का उपयोग कैसे करें। यह उपयोगी हो सकता है यदि सर्वर को फ़ाइल डाउनलोड करने के लिए क्रेडेंशियल्स की आवश्यकता होती है, या यदि आप डेटाबेस में भंडारण के लिए वेब फॉर्म में डेटा जमा करने के लिए एक स्वचालित स्क्रिप्ट बना रहे हैं।
यह किसी फ़ाइल से XML या JSON डेटा जमा करने पर भी चर्चा करेगा जिसका उपयोग REST API के साथ किया जा सकता है।
cURL का उपयोग करके URL एन्कोडेड फ़ील्ड POST करना
हमारे उदाहरणों के लिए, हम निम्नलिखित फॉर्म डेटा जमा करेंगे:
| फ़ील्ड नाम | मान |
|---|---|
| field1 | value1 |
| field2 | value2 |
डेटा को URL https://example.org/submit.php पर जमा किया जाएगा। example.org पर पते वास्तव में मौजूद नहीं हैं, यह केवल एक वेब डोमेन है जिसका हम सुरक्षित रूप से उदाहरणों के लिए उपयोग कर सकते हैं। submit.php एक फॉर्म सबमिट स्क्रिप्ट के लिए एक उदाहरण नाम भी है और किसी विशिष्ट चीज़ को संदर्भित नहीं करता है।
फॉर्म डेटा को POST अनुरोध में एक स्ट्रिंग के रूप में पास किया जा सकता है जिसमें प्रत्येक फॉर्म फ़ील्ड और उसका मान name=value द्वारा परिभाषित होता है, और उन्हें & से अलग करके –data विकल्प का उपयोग करके:
curl --data "field1=value1&field2=value2" https://example.org/submit.php
हालांकि, यह आदर्श नहीं है, क्योंकि इसके लिए URL एन्कोडेड डेटा की आवश्यकता होती है – अर्थात, डेटा जिसमें स्पेस और स्लैश को HTTP पर भेजने के लिए फॉर्मेट करने के लिए विशेष कोड से बदल दिया गया हो। आप इसे मैन्युअली कर सकते हैं, लेकिन cURL –data-urlencode का उपयोग करके आपके लिए यह कर सकता है:
curl --data-urlencode "field1=value1&field2=value2" https://example.org/submit.php
फ़ील्ड नाम URL एन्कोडेड नहीं हैं – यदि आप उन्हें एन्कोड करना चाहते हैं तो उन्हें = से पूर्व करें:
curl --data-urlencode "=user name=Linus Torvalds" https://example.org
हम निम्नलिखित उदाहरणों के लिए –data के बजाय –data-urlencode का उपयोग करेंगे ताकि POST अनुरोध करना आसान हो।
अलग से निर्दिष्ट URL एन्कोडेड फ़ील्ड
प्रत्येक फॉर्म फ़ील्ड नाम/मान को अलग से पास किया जा सकता है – यह चीजों को पढ़ने में बहुत सरल बनाता है:
curl --data-urlencode "field1=value1" --data-urlencode "field2=value2" https://example.org/submit.php
cURL का उपयोग करके मल्टीपार्ट/फ़ाइल अपलोड
मल्टीपार्ट फॉर्म अनुरोध, फ़ाइलों सहित, –form विकल्प का उपयोग करके POST के माध्यम से जमा किए जा सकते हैं। नीचे दिया गया उदाहरण myfile.txt को fileupload फॉर्म फ़ील्ड पर अपलोड करेगा:
curl --form "admin@wsxdn.com" https://example.org/submit.php
फ़ील्ड्स और फ़ाइलों के साथ मल्टीपार्ट, और फ़ाइलनाम
फ़ॉर्म फ़ील्ड नाम और मान जोड़े को फ़ाइल अपलोड के साथ भी शामिल किया जा सकता है, और अपलोड की गई फ़ाइल के लिए एक filename यदि आप इसे बदलना चाहते हैं:
curl --form "admin@wsxdn.com;filename=newfilename.txt" --form field1=value1 --form field2=value2 https://example.org/submit.php
डेटा के बिना
किसी भी डेटा के बिना POST अनुरोध करने के लिए, बस एक खाली स्ट्रिंग पास करें:
curl --data-urlencode '' https://example.org/submit.php
फ़ाइल अपलोड प्रगति दिखाना
अपलोड की प्रगति पर नजर रखने के लिए, प्रगति बार दिखाने के लिए -o output विकल्प जोड़ें:
curl --tr-encoding -X POST -v -# -o output -T myfile.dat https://example.org/submit.php
फ़ाइल में संग्रहीत डेटा जमा करना
यदि किसी फ़ाइल में पहले से संग्रहीत डेटा अपलोड कर रहे हैं, तो इसे एक बार में सबमिट किया जा सकता है, बजाय इसे cURL कमांड में पार्स करने के:
curl --data-urlencode admin@wsxdn.com https://example.org/submit.php
उपयुक्त हेडर जोड़कर प्रोग्रामेटिक API सेवाओं के लिए JSON और XML डेटा POST किया जा सकता है:
curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:text/xml" curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:application/json"
निष्कर्ष
यदि आप अक्सर Linux कमांड लाइन पर काम कर रहे हैं तो cURL में महारत हासिल करना महत्वपूर्ण है। यह उन कई कार्यों को कर सकता है जिनके लिए आपको आमतौर पर एक पूर्ण वेब ब्राउज़र की आवश्यकता होती है, साथ ही प्रोग्रामेटिक API के साथ इंटरैक्ट करने और अपने सर्वर से डेटा स्थानांतरित करने के लिए इसके उपयोग।
हमारे अन्य Linux शेल और स्क्रिप्टिंग लेख यहां देखें!