कर्ल का उपयोग करके POST अनुरोध कैसे भेजें: संपूर्ण संदर्भ

कर्ल का उपयोग करके POST अनुरोध कैसे भेजें: संपूर्ण संदर्भ

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

पोस्टमैन की 2025 स्टेट ऑफ़ द एपीआई रिपोर्ट के अनुसार, REST का उपयोग 93% तक हो चुका है। 82% संगठन अब कम से कम आंशिक रूप से एपीआई-फर्स्ट पद्धति का पालन करते हैं। सर्वर पर डेटा बनाने, सबमिट करने या भेजने के लिए आप POST कमांड का उपयोग करते हैं। एआई वर्कलोड ने इस प्रवृत्ति को और भी गति दी है। एआई के उपयोग से संबंधित एपीआई ट्रैफ़िक में 2024 में 73% की वृद्धि हुई (पोस्टमैन, 2024), और प्रत्येक एलएलएम प्रदाता के दस्तावेज़ की शुरुआत अब मानक "पहले कॉल" के रूप में कर्ल POST स्निपेट से होती है।

यह संदर्भ कर्ल का उपयोग करके भेजे जाने वाले POST अनुरोधों के हर रूप को विस्तार से बताता है, जिसमें एक लाइन के न्यूनतम कोड से लेकर वास्तविक क्रिप्टो भुगतान API पर काम करने वाले कॉल तक शामिल हैं। उद्देश्य: ऐसी सामग्री जिसे आप केवल पढ़ नहीं सकते, बल्कि पेस्ट भी कर सकते हैं। चाहे पहली बार सर्वर पर डेटा भेजना हो या रात के 2 बजे वेबहुक हैंडलर को रीबिल्ड करना हो, नीचे दिए गए पैटर्न आपकी वास्तविक ज़रूरतों को पूरा करते हैं।

नीचे दी गई तालिका संक्षिप्त विवरण है। इसमें कर्ल कमांड-लाइन विकल्पों के फ्लैग और उद्देश्य से संबंधित संक्षिप्त जानकारी दी गई है, जिनका उपयोग POST अनुरोध भेजते समय सबसे अधिक किया जाता है। प्रत्येक विकल्प की विस्तृत जानकारी आगे के अनुभागों में दी गई है।

झंडा यह क्या करता है जब आप इसे लेने के लिए हाथ बढ़ाते हैं
`-X POST`, `--request POST` HTTP अनुरोध विधि को POST पर बाध्य करता है स्पष्ट विधि, या असामान्य क्रियाएँ
`-d`, `--data` अनुरोध निकाय में डेटा भेजता है, POST स्वचालित रूप से सेट करता है फॉर्म फ़ील्ड, इनलाइन JSON, सरल पेलोड
`--डेटा-बाइनरी` फ़ाइल या बाइनरी डेटा को नई लाइनें हटाए बिना भेजता है फ़ाइल अपलोड, बड़ा JSON, कच्चा बाइनरी डेटा
`--data-urlencode` भेजने से पहले मान को URL-एनकोड करता है रिक्त स्थान या विशेष वर्णों वाले मान
`--json` `Content-Type: application/json` और `Accept: application/json` के साथ डेटा भेजता है curl 7.82.0 या नया संस्करण, JSON API
`-H`, `--हेडर` एक कस्टम HTTP हेडर जोड़ता है सामग्री प्रकार, प्राधिकरण, एपीआई कुंजी
`-एफ`, `--फॉर्म` फॉर्म फ़ील्ड या फ़ाइलों के साथ मल्टीपार्ट/फॉर्म-डेटा भेजता है फ़ाइल अपलोड, HTML-शैली के फ़ॉर्म
`-u`, `--user` HTTP बेसिक प्रमाणीकरण क्रेडेंशियल भेजता है लेगेसी एपीआई, सरल उपयोगकर्ता नाम-पासवर्ड प्रमाणीकरण
`-i`, `--include` आउटपुट में प्रतिक्रिया हेडर शामिल हैं सर्वर प्रतिक्रियाओं का निरीक्षण करना
`-v`, `--verbose` हेडर सहित संपूर्ण अनुरोध और प्रतिक्रिया प्रिंट करता है असफल POST अनुरोध को डीबग करना

कर्ल POST अनुरोध और HTTP विधि को समझना

कर्ल POST अनुरोध एक HTTP POST अनुरोध है, जिसे POST विधि का उपयोग करके कमांड लाइन से भेजा जाता है। कर्ल टूल स्वयं अपने कार्य को दो दर्जन से अधिक प्रोटोकॉल के बीच "डेटा स्थानांतरण" के रूप में वर्णित करता है, जिनमें से HTTP केवल एक है। POST का अर्थ है: यह डेटा है, इस पर कुछ काम करो। पेलोड अनुरोध के मुख्य भाग में जाता है, URL में कभी नहीं। इसी विशेषता के कारण POST संसाधन निर्माण, फॉर्म सबमिशन और क्रेडेंशियल से संबंधित किसी भी चीज़ को संभालता है। GET डेटा को क्वेरी स्ट्रिंग में संग्रहीत करता है, जो प्रत्येक प्रॉक्सी और प्रत्येक ब्राउज़र इतिहास के लिए दृश्यमान होता है। POST ऐसा नहीं करता है।

अधिकांश ट्यूटोरियल एक छोटी लेकिन उपयोगी जानकारी को छोड़ देते हैं। `-d` पास करने पर कर्ल स्वचालित रूप से POST मोड में बदल जाता है। `-X POST` का उपयोग करना वैकल्पिक है, जो उपयोग किए जाने वाले कस्टम अनुरोध विधि को निर्दिष्ट करता है। फिर भी कई उदाहरणों में इसका उपयोग किया जाता है क्योंकि पेलोड के साथ `-X POST` पढ़ने से इसका उद्देश्य तुरंत स्पष्ट हो जाता है।

PUT और POST कमांड में अक्सर भ्रम की स्थिति आ जाती है, इसलिए इन्हें स्पष्ट रूप से समझना ज़रूरी है। PUT कमांड किसी ज्ञात स्थान पर मौजूद संसाधन को बदलता है। POST कमांड एक नया संसाधन बनाता है या किसी सामान्य एंडपॉइंट पर संसाधित होने के लिए डेटा भेजता है।

कर्ल के साथ POST अनुरोध

व्यवहार में कर्ल POST सिंटैक्स और -d फ्लैग का उपयोग

कर्ल POST का न्यूनतम प्रारूप एक पंक्ति का होता है:

```

curl -d "username=arya&age=16" https://api.example.com/users

```

बस इतना ही। POST अनुरोध, फॉर्म-यूआरएलएनकोडेड बॉडी, कोई झंझट नहीं। `-d` तीन काम करता है: यह पेलोड को अनुरोध बॉडी में डालता है, अनुरोध विधि को POST में बदलता है, और डिफ़ॉल्ट हेडर के रूप में `Content-Type: application/x-www-form-urlencoded` जोड़ता है। मैं आमतौर पर थोड़ा अधिक विस्तृत रूप ही पेस्ट करता हूँ, क्योंकि कोड समीक्षा में POST इंटेंट बेहतर पढ़ा जा सकता है।

```

curl -X POST -d "username=arya&age=16" https://api.example.com/users

```

डेटा नेटवर्क पर समान बाइट्स। अनुरोध के लिए समान आर्गुमेंट्स। आपकी टीम को स्कैन करने में जो भी आसान लगे, उसका उपयोग करें। `-d` फ्लैग कमांड लाइन से सर्वर पर डेटा भेजने के लिए मुख्य रूप से उपयोग किया जाता है, और यह बैकएंड डेवलपर द्वारा कर्ल पर भेजे जाने वाले 90 प्रतिशत कार्यों को संभालता है: शेल कॉल, वेबहुक टेस्ट, मेकफ़ाइल टारगेट, गिटहब एक्शन स्टेप्स।

`-d` के तीन करीबी रिश्तेदार हैं। `--data-binary` आपके बाइट्स को बरकरार रखता है; सामान्य `-d` नई लाइनों को हटा देता है और बाइनरी पेलोड को विकृत कर देता है। `--data-urlencode` आपके लिए प्रतिशत-एनकोडिंग करता है: `--data-urlencode "name=I am Daniel"` `name=I%20am%20Daniel` के रूप में आता है। `--data-raw` तब काम आता है जब कोई मान `@` से शुरू होता है और कर्ल को फ़ाइल नहीं पढ़नी चाहिए। कई `-d` फ़्लैग `&` से जुड़ते हैं। फ़ॉर्म के लिए ठीक है। JSON के लिए कभी नहीं।

एक आखिरी बात: उद्धरण चिह्नों का प्रयोग। पेलोड के चारों ओर एकल उद्धरण चिह्न लगाने से शेल '$' या बैकस्लैश को नहीं समझ पाता। अगर आप इन्हें भूल गए, तो रात के 2 बजे तक आपको यह सोचना पड़ेगा कि आपके POST डेटा का आधा हिस्सा गायब क्यों है।

ये विवरण महत्वपूर्ण हैं क्योंकि कर्ल स्वयं दुनिया के सबसे अधिक परीक्षण किए गए HTTP क्लाइंटों में से एक है। स्टेनबर्ग के दिसंबर 2025 के विश्लेषण में उस वर्ष आठ रिलीज़ दर्ज की गईं। नौ CVE, सभी निम्न या मध्यम श्रेणी के थे। 2,179 सक्रिय परीक्षण मामले थे, जो बारह महीने पहले की तुलना में 232 अधिक थे। रिलीज़ 8.11.1, दिसंबर 2024, ने CVE-2024-11053 (एक netrc-और-redirect क्रेडेंशियल लीक) को ठीक किया। अप्रैल 2026 के अंत तक वर्तमान स्थिर संस्करण कर्ल 8.20.0 है। 7.82.0 से नीचे के संस्करण वाले उपयोगकर्ताओं के पास अभी भी `--json` फ़्लैग नहीं है और वे पुराने तीन-फ़्लैग पैटर्न पर वापस आ जाते हैं।

--json या -H का उपयोग करके curl के साथ JSON डेटा भेजना

2026 में JSON, REST API की सर्वव्यापी भाषा बन जाएगी। कर्ल के साथ इसे POST करने के दो तरीके हैं। इनमें से कौन सा तरीका इस्तेमाल करना है, यह पूरी तरह से मशीन पर मौजूद कर्ल के संस्करण पर निर्भर करता है।

क्लासिक थ्री-फ्लैग पैटर्न, CentOS 6 के बाद से सभी जगह काम करता है:

```

curl -X POST

-एच "Content-Type: application/json"

-डी '{"title":"Tea","quantity":2}'

https://api.example.com/orders

```

आधुनिक शॉर्टहैंड, कर्ल 7.82.0 (मार्च 2022) से उपलब्ध:

```

curl --json '{"title":"Tea","quantity":2}' https://api.example.com/orders

```

`--json` फ़्लैग तीन काम करता है: `Content-Type: application/json` सेट करता है, `Accept: application/json` सेट करता है और बॉडी भेजता है। यह कंपोज़िशन भी करता है: यदि आप `--json` को एक से अधिक बार पास करते हैं, तो पेलोड आपस में जुड़ जाते हैं। स्ट्रीमिंग एंडपॉइंट में JSON चंक्स को पाइप करते समय यह उपयोगी होता है।

किसी फ़ाइल में संग्रहीत JSON पेलोड के लिए, फ़ाइल पथ से पहले `@` लगाएं। JSON ऑब्जेक्ट इतना बड़ा हो जाता है कि उसे सीधे पेस्ट नहीं किया जा सकता, या जब वह वर्ज़न कंट्रोल में होता है, या जब कोई अन्य स्क्रिप्ट उसे जनरेट करती है, तो फ़ाइल से डेटा पोस्ट करना मानक पैटर्न बन जाता है।

```

curl -X POST -H "Content-Type: application/json" -d @order.json https://api.example.com/orders

curl --json @order.json https://api.example.com/orders

```

दूसरा पैटर्न `order.json` नामक फ़ाइल से डेटा पढ़ता है और उसे सभी सही हेडर के साथ भेजता है। बड़े या संभावित रूप से बाइनरी JSON डेटा के लिए, `--data-binary @file.json` अधिक सुरक्षित विकल्प है। यह नई लाइनों को नहीं हटाता, विशेष वर्णों की व्याख्या नहीं करता, और कच्चे बाइनरी डेटा को ऐसे एंडपॉइंट पर भेजता है जो फॉर्म फ़ील्ड के बजाय बाइट्स की अपेक्षा करता है। तीसरा पैटर्न `-d @-` के माध्यम से stdin से डेटा पढ़ता है। यह तब उपयोगी होता है जब किसी अन्य कमांड के आउटपुट को सीधे कर्ल POST में पाइप करना हो।

नीचे दी गई तालिका चार सामान्य JSON आकृतियों को एक ही एंडपॉइंट के साथ मैप करती है:

नमूना आज्ञा कब उपयोग करें
इनलाइन, क्लासिक `-X POST -H "Content-Type: application/json" -d '{"k":"v"}'` किसी भी कर्ल संस्करण के साथ अधिकतम अनुकूलता
इनलाइन, आधुनिक `--json '{"k":"v"}'` curl 7.82.0 या इससे नया संस्करण, सबसे साफ सिंटेक्स
फ़ाइल से, सुरक्षित `-X POST -H "..." -d @payload.json` पेलोड को वर्शन कंट्रोल में रखा गया है।
फ़ाइल से, बाइनरी-सुरक्षित `-X POST -H "..." --data-binary @payload.json` बड़ी फ़ाइलें, नई पंक्तियों वाले पेलोड

यह पहले से कहीं अधिक महत्वपूर्ण हो गया है। हर प्रमुख एलएलएम प्रदाता — ओपनएआई, एंथ्रोपिक, मिस्ट्रल, गूगल — अपने एपीआई दस्तावेज़ों की शुरुआत कर्ल पोस्ट उदाहरण से करता है, जिसमें ठीक इसी तरह का उदाहरण दिया गया है। एआई-संचालित ट्रैफ़िक ने 2024 में कुल एपीआई कॉल वॉल्यूम में 73% की वृद्धि की (पोस्टमैन)। कर्ल अब "मैं इस एंडपॉइंट को कैसे कॉल करूं" के लिए एक प्रामाणिक संदर्भ बन गया है।

कर्ल के साथ POST अनुरोध

कंटेंट-टाइप, हेडर और कर्ल क्या मानता है

अधिकांश "415 अनसपोर्टेड मीडिया टाइप" प्रतिक्रियाओं का कारण एक हेडर का न होना होता है। `-d` कमांड का उपयोग करने पर, कर्ल चुपचाप आपके अनुरोध में `Content-Type: application/x-www-form-urlencoded` जोड़ देता है। यदि आप `-H "Content-Type: application/json"` या `--json` कमांड का उपयोग किए बिना JSON बॉडी भेजते हैं, तो आपको 415 त्रुटि मिलती है। कोई चेतावनी नहीं, बस अस्वीकृति।

बॉडी के साथ अन्य मेटाडेटा भी शामिल होता है: कंटेंट-लेंथ, ऑथराइजेशन हेडर, ट्रेसिंग के लिए X-रिक्वेस्ट-आईडी। इस मेटाडेटा को सही ढंग से प्राप्त करना किसी भी API इंटीग्रेशन का आधा काम है। JSON ऑब्जेक्ट को तैयार करना आसान हिस्सा है।

`-H` कस्टम हेडर जोड़ता है। आवश्यकतानुसार दोहराएँ। हेडर नाम केस-संवेदनशील नहीं होते; मान होते हैं। गलत तरीके से कॉन्फ़िगर किए गए POST अनुरोध को डीबग करने का सबसे तेज़ तरीका: इसे एक बार `-v` के साथ चलाएँ, अनुरोध पंक्ति पढ़ें और API दस्तावेज़ों से तुलना करें। दस में से आठ बार त्रुटि कुछ ही सेकंड में सामने आ जाती है।

दो और बातें। कंटेंट-लेंथ कर्ल द्वारा बॉडी साइज़ से स्वतः सेट हो जाती है; इसे बदलने की आवश्यकता बहुत कम होती है। `Accept: application/json` सर्वर को HTML के बजाय JSON में उत्तर देने का निर्देश देता है। इसके लिए एक और `-H` जोड़ें, या `--json` का उपयोग करें, जो कंटेंट-टाइप और एक्सेप्ट दोनों को एक साथ सेट करता है।

curl POST -F का उपयोग करके फॉर्म डेटा और फ़ाइल अपलोड करें

फ़ाइलों के साथ HTML-शैली के फ़ॉर्म डेटा के लिए, सही फ़्लैग `-F` है। यह `multipart/form-data` अनुरोध उत्पन्न करता है। यह फ़ॉर्म-यूआरएल एन्कोडेड `-d` द्वारा डिफ़ॉल्ट रूप से उपयोग किए जाने वाले कंटेंट टाइप से भिन्न है। दोनों के लिए अलग-अलग अवधारणाएँ हैं। एक पैराग्राफ़ के ट्यूटोरियल अक्सर इन दोनों को एक ही मान लेते हैं, जिससे गंभीर त्रुटियाँ उत्पन्न हो जाती हैं।

`-F` प्रति फ़ील्ड एक बार। सादा फ़ॉर्म फ़ील्ड:

```

curl -F "name=Arya" https://api.example.com/submit

```

फ़ाइल अपलोड:

```

curl -F "file=@/path/to/image.png" https://api.example.com/upload

```

`@` उपसर्ग कर्ल को डिस्क से फ़ाइल पढ़ने और उसकी सामग्री को अनुरोध निकाय में शामिल करने का निर्देश देता है। कर्ल फ़ाइल नाम से MIME प्रकार का स्वतः पता लगाता है; आवश्यकता पड़ने पर इसे स्पष्ट रूप से ओवरराइड करें:

```

curl -F "[email protected];type=image/png" https://api.example.com/upload

```

एकाधिक `-F` फ़्लैग एक ही अनुरोध में कई फ़ील्ड या फ़ाइलें पैक करते हैं:

```

curl -F "title=Holiday" -F "[email protected]" -F "[email protected]" https://api.example.com/album

```

JSON फ़ाइल या बाइनरी डेटा को स्ट्रीमिंग एंडपॉइंट पर भेजते समय, अक्सर बिना मल्टीपार्ट रैपर के रॉ फ़ाइल सामग्री की आवश्यकता होती है। इसके लिए `--data-binary @file.bin` का उपयोग करें। यह फ़ाइल बाइट्स को अनुरोध बॉडी के रूप में, आपके द्वारा स्पष्ट रूप से सेट किए गए कंटेंट-टाइप के साथ, हूबहू भेजता है।

curl POST में प्रमाणीकरण: बेसिक, बियरर, API कुंजी

2026 में लगभग हर REST API में तीन प्रकार के प्रमाणीकरण का उपयोग किया जाएगा। बेसिक प्रमाणीकरण (उपयोगकर्ता नाम और पासवर्ड, बेस64 एन्कोडेड हेडर में):

```

curl -u "myuser:mypass" -X POST -d "..." https://api.example.com/login

```

बियरर टोकन, जिनका उपयोग अधिकांश आधुनिक एपीआई द्वारा किया जाता है, जिनमें प्रत्येक ओएऑथ-जारी क्रेडेंशियल शामिल है, एक कस्टम ऑथराइजेशन हेडर पर आधारित होते हैं:

```

curl -H "Authorization: Bearer $TOKEN" --json '{"q":"hello"}' https://api.example.com/query

```

एपीआई कुंजी आमतौर पर सेवा-विशिष्ट हेडर में मौजूद होती हैं:

```

curl -H "X-API-Key: $PLISIO_KEY" --json @invoice.json https://api.plisio.net/api/v1/invoices/new

```

एनवायरनमेंट वेरिएबल या सीक्रेट मैनेजर से क्रेडेंशियल कभी भी सीधे टाइप नहीं किए जाते। क्यों? GitGuardian की 2025 स्टेट ऑफ़ सीक्रेट्स स्प्राउल रिपोर्ट के अनुसार, 2024 के दौरान GitHub पर 23.8 मिलियन नए सीक्रेट लीक हुए, जो 2023 की तुलना में 25% अधिक है। इनमें से 90% से अधिक लीक होने के पांच दिन बाद भी मान्य रहे। कर्ल स्क्रिप्ट में सीधे क्रेडेंशियल लीक का एक प्रमुख कारण हैं। नीचे सुरक्षा अनुभाग में कार्यप्रणाली को समझाया गया है।

वास्तविक दुनिया में कर्ल पोस्ट का उदाहरण: प्लिसियो भुगतान एपीआई

बिना वास्तविक उदाहरण के संदर्भ दस्तावेज़ केवल सैद्धांतिक जानकारी होते हैं। नीचे दिया गया कर्ल पोस्ट कमांड प्लिसियो के रेस्ट एपीआई के माध्यम से क्रिप्टो भुगतान इनवॉइस तैयार करता है। प्लिसियो 0.5% का निश्चित शुल्क लेता है; कार्ड प्रोसेसर आमतौर पर 2-4% शुल्क लेते हैं। प्लिसियो तीस से अधिक क्रिप्टोकरेंसी को सपोर्ट करता है और उन्नीस ई-कॉमर्स प्लेटफॉर्म के लिए इंटीग्रेशन प्रदान करता है।

क्रिप्टो एपीआई अभ्यास लक्ष्यों के रूप में क्यों काम करते हैं? स्टेबलकॉइन्स ने 2025 के दौरान लगभग 28 ट्रिलियन डॉलर का वास्तविक आर्थिक लेन-देन किया। चेनैलिसिस ने 2023 से इसकी वृद्धि दर 133% सीएजीआर आंकी है। क्रिप्टो पेमेंट गेटवे बाजार 2025 में लगभग 2 बिलियन डॉलर के आसपास था, और 2026 तक 2.39 बिलियन डॉलर तक पहुंचने की राह पर है (द बिजनेस रिसर्च कंपनी के अनुसार)। बिटपे, कॉइनबेस कॉमर्स, प्लिसियो: इनमें से कोई भी चुनें। किसी भी आधुनिक गेटवे के साथ एकीकरण का पहला चरण लगभग हमेशा कर्ल पोस्ट होता है।

नया इनवॉइस बनाने के लिए न्यूनतम प्रक्रिया:

```

curl -X POST https://api.plisio.net/api/v1/invoices/new

-एच "Content-Type: application/json"

-H "प्राधिकरण: बियरर $PLISIO_API_KEY"

-डी '{

"source_currency": "USD",

"source_amount": 49.99,

"order_number": "INV-1042",

"currency": "BTC",

"email": "[email protected]",

"order_name": "Annual subscription"

}'

```

सफल कॉल होने पर HTTP 201 प्राप्त होता है। प्रतिक्रिया का मुख्य भाग एक JSON ऑब्जेक्ट होता है: जनरेट किया गया इनवॉइस ID, वह `invoice_url` जहाँ ग्राहक भुगतान करता है, गंतव्य वॉलेट पता और समाप्ति तिथि। अगले चरण में आपको जिस भी फ़ील्ड की आवश्यकता हो, उसे निकालने के लिए इसे `jq` के माध्यम से प्रोसेस करें।

```

... | jq '.data.invoice_url'

```

यही पूरा पैटर्न है। एंडपॉइंट बदलें, पेलोड बदलें, और इसका स्वरूप सीधे बिटपे चार्ज, कॉइनबेस कॉमर्स चेकआउट या स्ट्राइप पेमेंट इंटेंट में बदल जाता है। फ्लैग नहीं बदलते; केवल JSON बदलता है।

कर्ल POST अनुरोध को डीबग करना: -v, --trace, त्रुटियाँ

एक असफल POST रिक्वेस्ट एक जटिल समस्या है जिसे हल करना मुश्किल है। बिना सोचे-समझे दोबारा कोशिश करना सबसे खराब कदम है। कमांड लाइन पर मौजूद चार विकल्प आपकी अधिकांश ज़रूरतों को पूरा कर देते हैं।

`-v` कमांड रिक्वेस्ट लाइन, सभी रिक्वेस्ट हेडर और रिस्पॉन्स स्टेटस प्रिंट करता है। यह पहला कमांड है जिसका आप इस्तेमाल करते हैं। `--trace-ascii -` इससे भी ज़्यादा असरदार है: यह POST रिक्वेस्ट के पूरे बॉडी सहित पूरे कम्युनिकेशन को स्टैंडर्ड आउटपुट पर दिखाता है। रिस्पॉन्स हेडर को बॉडी के ऊपर दिखाने के लिए `curl -i` का इस्तेमाल करें। और `-w "%{http_code}\n"` सिर्फ़ HTTP स्टेटस कोड लिखता है, जो API के लिए CI चेक स्क्रिप्ट करते समय उपयोगी होता है।

आपको अक्सर ये स्टेटस कोड दिखाई देंगे: 400: सर्वर ने आपके अनुरोध को पार्स किया लेकिन पेलोड को अस्वीकार कर दिया। 401: प्रमाणीकरण हेडर गायब या अमान्य है। 415: गलत कंटेंट-टाइप। 500: आपके इनपुट पर सर्वर क्रैश हो गया। इनमें से प्रत्येक एक विशिष्ट लेयर को खारिज करता है, जो पहली विफलता पर `-v` चलाने के मूल्य का आधा है।

कर्ल पोस्ट सुरक्षा: एपीआई कुंजी, गुप्त कुंजी और लीक

हर संदर्भ में इस अनुभाग को छोड़ दिया जाता है। हर घटना के विश्लेषण में इसका उल्लेख होता है। दिसंबर 2024: अमेरिकी ट्रेजरी विभाग में हुए डेटा लीक का कारण बियॉन्डट्रस्ट एपीआई कुंजी का रिसाव था। ठीक उसी तरह का क्रेडेंशियल जो प्रोडक्शन स्क्रिप्ट में `-H "Authorization: Bearer ..."` हेडर के अंदर मौजूद होता है।

यह बचाव प्रक्रिया देखने में आकर्षक नहीं है। एनवायरनमेंट वेरिएबल्स से टोकन पढ़ें। उन्हें AWS Secrets Manager, HashiCorp Vault या 1Password CLI जैसे सीक्रेट मैनेजर में स्टोर करें। `gitleaks` या `trufflehog` को प्री-कमिट हुक के रूप में चलाते रहें। शेल हिस्ट्री में मौजूद हर टोकन को बदलते रहें। इनमें से कुछ भी रोमांचक नहीं है। लेकिन ये सब काम करता है। हर कर्ल POST रिक्वेस्ट पर इसे लागू करना, 2026 में एक बैकएंड डेवलपर के लिए सबसे महत्वपूर्ण आदत साबित हो सकती है।

कोई प्रश्न?

दो आकृतियाँ। बहुभाग अपलोड (HTML फॉर्म वायर प्रारूप): `curl -F "file=@/path/to/file.png" https://api.example.com/upload`। कच्चा बाइनरी, बिना रैपर के: `curl --data-binary @file.bin -H "Content-Type: application/octet-stream" https://api.example.com/raw`। `@` वह है जो कर्ल को डिस्क से पढ़ने के लिए प्रेरित करता है।

curl 7.82.0 (मार्च 2022) और नए संस्करण: `curl --json `{"key":"value"}` https://api.example.com`। पुराने संस्करणों पर, तीन-फ्लैग पैटर्न: `curl -X POST -H "Content-Type: application/json" -d `{"key":"value"}` https://api.example.com`। यदि JSON पहले से ही किसी फ़ाइल में है, तो `@` से पहले उपसर्ग लगाएं: `--json @payload.json` या `-d @payload.json`।

मैं इनमें से किसी को भी "बेहतर" नहीं कहूंगा। कर्ल उन सभी जगहों पर बेहतर है जहां शेल ग्राफिक्स कार्ड की जगह लेता है: एक बार के कॉल, सीआई जॉब, एसएसएच के माध्यम से की जाने वाली कोई भी गतिविधि। पोस्टमैन सेव्ड कलेक्शन, साइड-बाय-साइड डिफरेंसिंग और टीम वर्कफ़्लो में बेहतर है। मैं दोनों का उपयोग करता हूं।

शेल खोलें, `curl -X POST -d "field=value" https://api.example.com/endpoint` पेस्ट करें और एंटर दबाएं। यदि एंडपॉइंट JSON चाहता है, तो `-H "Content-Type: application/json"` जोड़ें, या यदि आप curl 7.82.0 या उससे नए संस्करण का उपयोग कर रहे हैं, तो `--json` का उपयोग करें। आउटपुट stdout पर प्रिंट होगा, जो `jq` के लिए तैयार है।

GET कमांड अपने आप काम करता है। POST कमांड तब सक्रिय होता है जब `-d`, `--data`, `--data-binary`, `--data-urlencode`, `-F` या `--json` जैसे विकल्प कमांड में डाले जाते हैं। बाकी सभी (PATCH, DELETE, PROPFIND) के लिए `-X` की आवश्यकता होती है क्योंकि इनमें से किसी में भी "शॉर्टकट" फ्लैग नहीं होता है।

टर्मिनल में `curl -X POST` (या कोई भी डेटा भेजने वाला फ्लैग) कमांड चलाने पर आपको यही आउटपुट मिलता है। यह कमांड सर्वर को बताता है कि "इसे लो और कुछ करो।" मैं इसका इस्तेमाल REST एंडपॉइंट को टेस्ट करने, प्रोडक्शन में बंद हुए वेबहुक को रीप्ले करने या डिप्लॉयमेंट के तुरंत बाद लैम्डा को चलाने के लिए करता हूँ।

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.