curl परिवर्तक
डेवcurl कमांड को fetch, axios, Python, Go, Java और HTTPie में रीयल-टाइम रूपांतरित करें — बहु-भाषा टैब के साथ।
दूरस्थ URL लाए नहीं जाते; अपना JSON सीधे पेस्ट करें।
इस पृष्ठ पर
curl परिवर्तक क्या है?#
curl HTTP के पास सबसे करीबी सार्वभौमिक भाषा है। हर ब्राउज़र DevTools पैनल, हर API docs साइट, और हर सहायता टिकट अंततः आपको एक curl कमांड देता है — “copy as cURL” वह तरीका है जिससे एक अनुरोध ब्राउज़र से किसी बग रिपोर्ट में यात्रा करता है। समस्या यह है कि चिपकाया गया curl कमांद शायद ही कभी वही होता है जिसे आप वास्तव में अपने कोडबेस में चला सकें। आपकी सेवा Python, या Go, या ब्राउज़र-साइड fetch में लिखी है; आप curl में shell out नहीं करना चाहते, आप उस HTTP क्लाइंट में समतुल्य कॉल चाहते हैं जो आप पहले से उपयोग करते हैं।
यह पेज उस अंतर को पाटता है। बाईं ओर एक curl कमांड चिपकाएँ, और यह shell सिंटैक्स — फ़्लैग, उद्धरण, पंक्ति निरंतरता, हेडर, body, auth — को एक संरचित अनुरोध में पार्स करता है, फिर एक साथ छह लक्ष्यों के लिए समतुल्य कोड उत्सर्जित करता है: ब्राउज़र fetch, axios, Python requests, Go net/http, Java HttpURLConnection, और httpie। आप टैब के पार पढ़ते हैं, अपने स्टैक से मेल खाने वाला एक कॉपी करते हैं, और आगे बढ़ते हैं।
पार्सिंग पूरी तरह आपके ब्राउज़र में चलती है। आपके द्वारा चिपकाया गया कमांड कभी सर्वर को नहीं छूता, जो मायने रखता है क्योंकि वास्तविक curl कमांड्स में अक्सर bearer टोकन, basic-auth credentials, या हस्ताक्षरित कुकीज़ होती हैं।
इसका उपयोग कैसे करें#
- अपना curl कमांड बाईं ओर इनपुट फलक में चिपकाएँ। आप अग्रणी
curlशब्द चिपका सकते हैं या छोड़ सकते हैं; दोनों काम करते हैं। अनुगामी\से जुड़े मल्टी-लाइन कमांड समझे जाते हैं, जैसे सीधे टर्मिनल से कॉपी किए गए कमांड जहाँ प्रत्येक फ़्लैग अपनी पंक्ति पर है। - यदि आप पहले आकार देखना चाहते हैं तो एक यथार्थपरक उदाहरण लोड करने के लिए नमूना क्लिक करें, या फलक मिटाने के लिए साफ़ करें।
- आउटपुट के ऊपर टैब बार से एक लक्ष्य भाषा चुनें: fetch, axios, python, go, java, या httpie। सभी छह एक ही पार्स से उत्पन्न होते हैं, इसलिए टैब स्विच करना तत्काल है — कोई पुनः-चलाना नहीं।
- पैनल में उत्पन्न कोड पढ़ें। इसे लेने के लिए टैब बार में कॉपी उपयोग करें।
- फलकों के नीचे स्थिति पट्टी देखें। यदि पार्सर किसी ऐसे फ़्लैग पर पहुँचा जिसे यह मॉडल नहीं करता (एक आउटपुट-फ़ाइल redirect, एक प्रॉक्सी सेटिंग), तो यह चुपचाप इसे गिराने के बजाय स्पष्ट रूप से कहता है।
मुख्य विशेषताएँ#
- एक वास्तविक shell tokenizer, regex scrape नहीं। एकल उद्धरण, दोहरे उद्धरण, ANSI-C
$'...'quoting (\n,\t,\x41,éएस्केप के साथ), backslash-newline पंक्ति निरंतरता, और"a\b"और'a\b'के बीच अंतर सभी वैसे ही संभाले जाते हैं जैसेbashकरता। रिक्ति पर विभाजित करने वाले साधारण परिवर्तक तो टूट जाते हैं जैसे ही कोई हेडर मान रिक्ति रखता है। - एक पार्स से छह लक्ष्य। आप
fetch,axios, Python, Go, Java, औरhttpieसाथ-साथ देखते हैं। यदि आप अनिश्चित हैं किfetchयाaxiosपकड़ें, तो आप दो क्लिक में एक ही auth हेडर का प्रबंधन तुलना कर सकते हैं। - Body बुद्धिमत्ता। जब अनुरोध
Content-Type: application/jsonलेकर जाता है, Python emitter इसेjson=कीवर्ड के रूप में पास करता है ताकि dict-आकार का body सही ढंग से भेजा जाए; अन्यथा यहdata=पर लौटता है। - Basic auth एक बार डिकोड। एक
-u user:passफ़्लैग fetch मेंbtoa("user:pass"), axios मेंauthब्लॉक, requests मेंauth=tuple, और Go मेंSetBasicAuthबनता है — प्रत्येक idiom वैसे जैसा वह भाषा अपेक्षा करती है। - अज्ञात फ़्लैग रिपोर्ट किए जाते हैं, निगले नहीं।
-o output.txtया--proxyस्थिति पट्टी मेंunknown argsके रूप में सामने आते हैं, इसलिए आप कभी चुपचाप भ्रमित नहीं होते कि एक रूपांतरण ने कोई redirect या प्रॉक्सी पकड़ लिया जिसे वास्तव में उसने गिराया। - कोई बैकएंड नहीं, कोई लीक नहीं। कमांड पेज की अपनी स्क्रिप्ट द्वारा in-memory टोकनीकृत होता है। कोई ऐसा नेटवर्क कॉल नहीं जो आपका चिपकाया टोकन कहीं ले जाए।
विस्तृत उदाहरण#
नमूना लोड करें (या वह चिपकाएँ जो ब्राउज़र DevTools JSON POST के लिए “Copy as cURL” दबाने पर उत्पन्न करते हैं):
curl -X POST https://example.com/api/v1/users \
-H 'Authorization: Bearer tok' \
-H 'Content-Type: application/json' \
-d '{"name":"Alice","role":"admin"}'
fetch टैब पर स्विच करें और आपको मिलता है:
const response = await fetch("https://example.com/api/v1/users", {
method: "POST",
headers: {
"Authorization": "Bearer tok",
"Content-Type": "application/json",
},
body: "{\"name\":\"Alice\",\"role\":\"admin\"}",
});
python टैब पर स्विच करें। चूँकि Content-Type JSON है, body json= कीवर्ड से जाता है:
import requests
url = 'https://example.com/api/v1/users'
headers = {
'Authorization': 'Bearer tok',
'Content-Type': 'application/json',
}
payload = '{"name":"Alice","role":"admin"}'
response = requests.request('POST', url, headers=headers, json=payload)
print(response.status_code)
वही कमांड तुरंत go, java, axios, और httpie टैब के अंतर्गत भी उपलब्ध है — एक चिपकाने की कीमत पर छह रूपांतरण।
अक्सर पूछे जाने वाले प्रश्न#
यह मेरे कमांड के लिए “unknown args” कहता है। इसने क्या छोड़ा?#
पार्सर उन curl फ़्लैगों को मॉडल करता है जिनका आप उपयोग किसी अनुरोध का वर्णन के लिए करते हैं — method, URL, हेडर, body, basic auth, --compressed, -k, -L। curl के अपने व्यवहार का वर्णन करने वाले फ़्लैग (जैसे body को फ़ाइल में लिखने के लिए -o, --proxy, --connect-timeout, --cert) अनुवाद नहीं होते, क्योंकि एक fetch कॉल में उनका कोई समतुल्य नहीं। उन्हें एकत्र किया जाता है और स्थिति पट्टी में दिखाया जाता है ताकि आप जानें कि वे जानबूझकर गिराए गए, खोए नहीं।
क्या मैं किसी ऐसे कमांड को रूपांतरित कर सकता हूँ जो $'...' ANSI-C quoting उपयोग करता है?#
हाँ। टर्मिनलों से कॉपी किए गए हेडर और bodies कभी-कभी $'...' में लिपटे आते हैं ताकि \n या \t जैसे एस्केप अनुक्रम shell द्वारा निर्वचित हों। tokenizer ANSI-C quoting समझता है और \n, \t, \xHH, \uHHHH, \UHHHHHHHH और साधारण एस्केप डिकोड करता है, इसलिए परिवर्तक जो बाइट्स देखता है वे curl द्वारा भेजे जाने वाले बाइट्स से मेल खाते हैं।
मेरा Python आउटपुट कभी json= और कभी data= क्यों उपयोग करता है?#
emitter आपके हेडर देखता है। जब Content-Type: application/json मौजूद होता है यह body को json= कीवर्ड से पास करता है, जो requests को हेडर सेट करने और payload सही ढंग से एन्कोड करने देता है। किसी भी अन्य content type (form-encoded, सादा पाठ, multipart) के लिए यह data= पर लौटता है, क्योंकि वहाँ json= थोपना गलत होता।
क्या यह मेरे लिए अनुरोध भेजता है?#
नहीं, और वह जानबूझकर है। यह टूल केवल कमांड को कोड में अनुवाद करता है; यह कभी निष्पादित नहीं। उत्पन्न स्निपेट आपके अपने प्रोग्राम में, आपके अपने credentials के अंतर्गत चलता है, जहाँ आप इसे कुछ लाइव करने से पहले निरीक्षण कर सकते हैं।