Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

cURL में महारत हासिल करें: फॉर्म डेटा के साथ POST अनुरोध कैसे भेजें

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 शेल और स्क्रिप्टिंग लेख यहां देखें!


  1. डेटा संरचना में चेनिंग के साथ हैशिंग (Hashing with Chaining) डेटा संरचना में चेनिंग के साथ हैशिंग (Hashing with Chaining)

    इस अनुभाग में हम देखेंगे कि चेनिंग (Chaining) के साथ हैशिंग क्या है। चेनिंग टकराव समाधान (collision resolution) की एक तकनीक है। हम टकराव से बच नहीं सकते, लेकिन हम टकराव को कम करने की कोशिश कर सकते हैं, और एक ही हैश मान के लिए कई तत्वों को संग्रहीत करने का प्रयास कर सकते हैं। इस तकनीक में मान लीजिए

  1. Java से MySQL डेटाबेस में डेटा कैसे अपडेट करें? Java से MySQL डेटाबेस में डेटा कैसे अपडेट करें?

    JDBC का उपयोग करके MySQL में रिकॉर्ड अपडेट करें Java से MySQL डेटाबेस में डेटा अपडेट करने के लिए, आप JDBC (Java Database Connectivity) API के साथ SQL UPDATE कथन का उपयोग करते हैं। SQL सिंटैक्स UPDATE टेबल_नाम SET कॉलम1 = मान1, कॉलम2 = मान2, ... WHERE शर्त; पूर्ण Java उदाहरण 1. डेटाबेस तैयारी IN

  1. Java से MySQL डेटाबेस में डेटा कैसे डिलीट करें? Java से MySQL डेटाबेस में डेटा कैसे डिलीट करें?

    JDBC का उपयोग करके MySQL से रिकॉर्ड डिलीट करें Java से MySQL में डेटा डिलीट करने के लिए, आप JDBC के साथ SQL DELETE कथन का उपयोग करते हैं। SQL सिंटैक्स DELETE FROM टेबल_नाम WHERE शर्त; पूर्ण Java उदाहरण 1. डेटाबेस तैयारी INSERT INTO DeleteTableDemo VALUES(101, Smith), (102, Johnson); 2. Java को