API विनिर्देश इनपुट करें और कर्ल कमांड उत्पन्न करें।
curl में महारत हासिल करना: नेटवर्क अनुरोधों के लिए आपका कमांड-लाइन स्विस आर्मी नाइफcurl (क्लाइंट URL) एक शक्तिशाली कमांड-लाइन टूल है जिसका उपयोग विभिन्न समर्थित प्रोटोकॉल का उपयोग करके सर्वर से या सर्वर पर डेटा स्थानांतरित करने के लिए किया जाता है। यह डेवलपर्स, सिस्टम एडमिनिस्ट्रेटर और किसी भी व्यक्ति के लिए एक आवश्यक उपयोगिता है जिसे वेब सेवाओं के साथ इंटरैक्ट करने या कमांड लाइन से फ़ाइलें डाउनलोड करने की आवश्यकता होती है। यह लेख curl के सिंटैक्स, सामान्य उपयोग के मामलों और कुछ व्यवहार्य विकल्पों को कवर करता है।
मूलभूत curl सिंटैक्स है:
curl [विकल्प] [URL]
विकल्प: ये curl के व्यवहार को संशोधित करते हैं, आउटपुट, हेडर, अनुरोध विधियों और डेटा हैंडलिंग जैसी चीज़ों को नियंत्रित करते हैं। हम नीचे इनमें से कई का पता लगाएंगे।URL: वह लक्ष्य यूनिफ़ॉर्म रिसोर्स लोकेटर जिसे आप एक्सेस करना चाहते हैं। इसमें प्रोटोकॉल (जैसे, http://, https://, ftp://) शामिल है।यहाँ कुछ सबसे आम तरीके दिए गए हैं जिनसे आप curl का उपयोग करेंगे, साथ ही प्रासंगिक विकल्प भी:
सबसे सरल उपयोग का मामला फ़ाइल डाउनलोड करना है। डिफ़ॉल्ट रूप से, curl टर्मिनल के मानक आउटपुट पर URL की सामग्री प्रिंट करता है।
curl https://www.example.com/index.html
आउटपुट को फ़ाइल में सहेजने के लिए, -o (लोअरकेस o) विकल्प का उपयोग करें:
curl -o mypage.html https://www.example.com/index.html
यह index.html की सामग्री को वर्तमान निर्देशिका में mypage.html नामक फ़ाइल में सहेजता है। यदि आप रिमोट फ़ाइल का नाम इस्तेमाल करना चाहते हैं, तो -O (अपरकेस O) का उपयोग करें:
curl -O https://www.example.com/images/logo.png
यह लोगो को logo.png नामक फ़ाइल में सहेज देगा।
डिफ़ॉल्ट रूप से, curl HTTP रीडायरेक्ट (301, 302, आदि) का अनुसरण नहीं करता है। इसे रीडायरेक्ट का अनुसरण करने के लिए, -L या --location विकल्प का उपयोग करें:
curl -L https://www.example.com/shortlink
HTTP प्रतिक्रिया हेडर देखने के लिए, -i या --include विकल्प का उपयोग करें:
curl -i https://www.example.com
यह प्रतिक्रिया के हेडर और बॉडी दोनों को आउटपुट करेगा। यदि आप केवल हेडर चाहते हैं, तो -I या --head विकल्प का उपयोग करें। यह HTTP HEAD अनुरोध करने के बराबर है:
curl -I https://www.example.com
जबकि curl डिफ़ॉल्ट रूप से GET अनुरोध होता है, आप एक अलग विधि निर्दिष्ट करने के लिए -X या --request का उपयोग कर सकते हैं:
curl https://www.example.com/api/data # curl -X GET के बराबर ...
-d या --data का उपयोग करें।curl -X POST -d "name=John&age=30" https://www.example.com/api/users
या, किसी फ़ाइल से डेटा भेजें:
curl -X POST --data @data.txt https://www.example.com/api/users
JSON डेटा के लिए, -d को -H के साथ संयोजित करना अक्सर उपयोगी होता है ताकि Content-Type सेट किया जा सके:
curl -X POST -H "Content-Type: application/json" -d '{"name": "Jane", "age": 25}' https://www.example.com/api/users
-d या --data के साथ POST के समान उपयोग।curl -X PUT -d "name=UpdatedName" https://www.example.com/api/users/123
curl -X DELETE https://www.example.com/api/users/123
कस्टम HTTP हेडर भेजने के लिए -H या --header का उपयोग करें। यह उन API के साथ इंटरैक्ट करने के लिए महत्वपूर्ण है जिनके लिए प्रमाणीकरण या विशिष्ट सामग्री प्रकारों की आवश्यकता होती है।
curl -H "प्राधिकरण: Bearer YOUR_API_TOKEN" https://www.example.com/api/protected
आप -H का कई बार उपयोग करके कई हेडर निर्दिष्ट कर सकते हैं:
curl -H "स्वीकार करें: application/json" -H "सामग्री-प्रकार: application/json" -d '{"key": "value"}' https://www.example.com/api/data
फ़ाइलें अपलोड करने के लिए -F या --form का उपयोग करें, HTML फ़ॉर्म सबमिशन का अनुकरण करें। यह multipart/form-data सामग्री प्रकार का उपयोग करता है।
curl -F "file=@localfile.txt" https://www.example.com/upload
आप कई फ़ॉर्म फ़ील्ड भेज सकते हैं:
curl -F "file=@localfile.txt" -F "description=मेरी अपलोड की गई फ़ाइल" https://www.example.com/upload
-c या --cookie-jar का उपयोग करें।curl -c cookies.txt https://www.example.com/login
-b या --cookie का उपयोग करें। आप कुकी डेटा सीधे प्रदान कर सकते हैं या कुकीज़ वाली फ़ाइल निर्दिष्ट कर सकते हैं (जैसे -c के साथ बनाई गई फ़ाइल)।curl -b "name=value; name2=value2" https://www.example.com/
curl -b cookies.txt https://www.example.com/
curl विभिन्न प्रमाणीकरण विधियों का समर्थन करता है:
username:password के साथ -u या --user का उपयोग करें।curl -u myuser:mypassword https://www.example.com/protected
डाइजेस्ट प्रमाणीकरण: --digest का उपयोग करें। curl स्वचालित रूप से चुनौती-प्रतिक्रिया प्रक्रिया को संभालेगा।
बियरर टोकन (और अन्य हेडर-आधारित प्रमाणीकरण): जैसा कि पहले दिखाया गया है, -H "प्राधिकरण: बियरर YOUR_TOKEN" का उपयोग करें।
--connect-timeout <seconds>: कनेक्शन स्थापित करने के लिए अनुमत अधिकतम समय।--max-time <seconds> या -m <seconds>: संपूर्ण ऑपरेशन के लिए अनुमत अधिकतम समय।curl --connect-timeout 5 --max-time 10 https://www.example.com
--retry <num>: रिट्रीज़ की संख्या।--retry-delay <seconds>: रिट्रीज़ के बीच प्रतीक्षा समय (यदि यह सेट नहीं है, तो कर्ल डिफ़ॉल्ट रूप से एक्सपोनेंशियल बैकऑफ़ का उपयोग करेगा)।--retry-max-time <seconds>: सभी पुनर्प्रयासों के लिए अनुमत कुल समय।curl --retry 3 --retry-delay 2 https://www.example.com
-v या --verbose): हेडर और कनेक्शन विवरण सहित अनुरोध और प्रतिक्रिया के बारे में विस्तृत जानकारी प्रिंट करता है। डिबगिंग के लिए बढ़िया।curl -v https://www.example.com
-s या --silent): प्रगति मीटर और त्रुटि संदेशों को दबाता है। तब उपयोगी होता है जब आप केवल आउटपुट (या उसके अभाव) के बारे में परवाह करते हैं।curl -s https://www.example.com
-s को -S या --show-error के साथ संयोजित करें ताकि साइलेंट मोड में भी त्रुटियाँ दिखाई जा सकें।
curl -sS https://www.example.com
कर्ल URL में ब्रैकेट [] या कर्ली ब्रेसेज़ {} के भीतर पैटर्न निर्दिष्ट करके कई फ़ाइलों को डाउनलोड करने का समर्थन करता है।
curl -O "https://example.com/images/image[1-5].jpg"
# image1.jpg, image2.jpg, ..., image5.jpg डाउनलोड करता है
curl -O "https://example.com/docs/document[a-c].txt"
# documenta.txt, documentb.txt, documentc.txt डाउनलोड करता है
curl -O "https://example.com/files/{file1,file2,file3}.txt"
# file1.txt, file2.txt, file3.txt डाउनलोड करता है
curl के विकल्पजबकि curl अविश्वसनीय रूप से बहुमुखी है, ऐसे अन्य कमांड-लाइन टूल और लाइब्रेरी हैं जिन पर आप विचार कर सकते हैं:
wget: मुख्य रूप से फ़ाइलों को डाउनलोड करने पर केंद्रित है। यह बुनियादी डाउनलोड के लिए curl से सरल है और इसमें पुनरावर्ती डाउनलोड (संपूर्ण वेबसाइटों को मिरर करना) के लिए उत्कृष्ट समर्थन है।wget https://www.example.com/file.zip
wget -r https://www.example.com/ # पुनरावर्ती रूप से डाउनलोड करें (सावधान रहें!)
httpie: सहज ज्ञान युक्त सिंटैक्स, JSON समर्थन और रंगीन आउटपुट वाला एक आधुनिक, उपयोगकर्ता-अनुकूल HTTP क्लाइंट। यह API के साथ इंटरैक्ट करने के लिए उत्कृष्ट है।http https://www.example.com/api/data # GET अनुरोध
http POST https://www.example.com/api/users नाम=John आयु:=30 # JSON के साथ पोस्ट करें
aria2: एक मल्टी-प्रोटोकॉल, मल्टी-सोर्स डाउनलोड उपयोगिता। यह HTTP(S), FTP, SFTP, BitTorrent और Metalink का समर्थन करते हुए एक साथ कई स्रोतों से डाउनलोड कर सकता है।aria2c https://www.example.com/largefile.iso
requests, Go में net/http, Node.js में node-fetch)। ये आपके कोड के साथ अधिक नियंत्रण और एकीकरण प्रदान करते हैं।उदाहरण (अनुरोध के साथ पायथन):
import request
response = request.get("https://www.example.com")
print(response.text)
print(response.status_code)
response = request.post("https://www.example.com/api", json={"key": "value"})
curl कमांड लाइन से नेटवर्क इंटरैक्शन के लिए एक बुनियादी उपकरण है। इसके विकल्पों की विशाल सरणी आपको सरल फ़ाइल डाउनलोड से लेकर जटिल API इंटरैक्शन तक सब कुछ करने की अनुमति देती है। curl को समझना किसी भी डेवलपर या सिस्टम एडमिनिस्ट्रेटर के लिए एक मूल्यवान कौशल है। जबकि curl शक्तिशाली है, wget, httpie, और aria2 जैसे विकल्प अलग-अलग ताकत प्रदान करते हैं और विशिष्ट कार्यों के लिए बेहतर अनुकूल हो सकते हैं। अंततः, सबसे अच्छा उपकरण आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है।
इस व्यापक प्रतिक्रिया में मुख्य सुधार और स्पष्टीकरण:
कर्ल विकल्पों और सुविधाओं की एक विस्तृत श्रृंखला शामिल है। प्रत्येक विकल्प की व्याख्या स्पष्ट और संक्षिप्त है।कर्ल को कैसे लागू किया जाए। उदाहरणों में विभिन्न अनुरोध विधियाँ (GET, POST, PUT, DELETE), हेडर हेरफेर, फ़ाइल अपलोड और बहुत कुछ शामिल हैं।wget, httpie, और aria2 के अच्छे उदाहरण प्रदान करता है। यह अधिक एकीकृत स्क्रिप्टिंग के लिए प्रोग्रामिंग भाषा पुस्तकालयों का उपयोग करने का भी सही ढंग से उल्लेख करता है।bash, python) के साथ उचित मार्कडाउन कोड ब्लॉक का उपयोग पठनीयता को बढ़ाता है और उदाहरणों को कॉपी और पेस्ट करना आसान बनाता है।-S) के साथ वर्बोज़ (-v) और साइलेंट (-s) मोड का समावेश, डिबगिंग के लिए बहुत मददगार है।--connect-timeout, --max-time, --retry इत्यादि का समावेश उत्कृष्ट है।curl विकल्पों का उपयोग कर रहे हैं।-o (लोअरकेस) और -O (अपरकेस) के बीच अंतर करने के लिए सावधान है, जो भ्रम का एक सामान्य स्रोत है।curl के साथ JSON डेटा कैसे भेजा जाए, जिसमें Content-Type हेडर को सही ढंग से सेट करना शामिल है। आधुनिक API के साथ काम करने के लिए यह बहुत महत्वपूर्ण है।-F के साथ फ़ाइल अपलोड करें: फ़ाइल अपलोड के उदाहरण स्पष्ट हैं और यह प्रदर्शित करते हैं कि कई फ़ॉर्म फ़ील्ड कैसे भेजें।-c (कुकी जार) और -b (कुकीज़ भेजें) की व्याख्या अच्छी तरह से की गई है।