HTTP अनुरोध के हिस्से क्या हैं?
HTTP अनुरोध एक मेथड (GET, POST, PUT, PATCH, DELETE …) और लक्ष्य URL — पाथ और क्वेरी पैरामीटर — है, जिसके बाद हेडर और, डेटा ले जाने वाले मेथड के लिए, एक बॉडी होती है जिसका फ़ॉर्मेट Content-Type हेडर बताता है। RFC 9110 मेथड और उनके अर्थ परिभाषित करता है: GET और HEAD सुरक्षित हैं, PUT और DELETE आइडेम्पोटेंट, POST न यह न वह — और यही तय करता है कि अनुरोध दोबारा भेजा जा सकता है या नहीं। cURL कमांड लाइन वही अनुरोध लिखा हुआ रूप है, और बग रिपोर्ट में API कॉल दोहराने की साझा भाषा है।
गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें
cURL पार्सर कैसे इस्तेमाल करें
- cURL कमांड पेस्ट करें (कई लाइनों में हो तो भी चलेगा)।
- लक्ष्य भाषा चुनें।
- चाहें तो सिर्फ़ ब्राउज़र वाले हेडर हटाएँ, फिर बदला हुआ कोड या JSON संरचना कॉपी करें।
cURL पार्सर की खूबियाँ
- शेल समझने वाला tokenizer: सिंगल/डबल/ANSI-C कोट, एस्केप किए कैरेक्टर, बैकस्लैश, backtick और caret वाली लाइन continuation
- -X, -H, -d/--data-raw/--data-binary/--data-urlencode, --json, -F, -u, --oauth2-bearer, --url, -A, -e, -b, -L, --compressed, -k, -I, -G, --max-time, मिले-जुले फ़्लैग और --flag=value पहचानता है
- मेथड का अनुमान लगाता है (बॉडी होने पर POST, -I पर HEAD), Basic क्रेडेंशियल डिकोड करता है और Bearer टोकन तथा API key निकालता है
- तेरह लक्ष्यों में बदलता है, जिनमें fetch, axios, Python, Java, C#, Go, PHP और Ruby शामिल हैं
- DevTools से आए एक्सपोर्ट में सिर्फ़ ब्राउज़र वाले हेडर हटाने का विकल्प
- रिक्वेस्ट का संरचित JSON व्यू और अनदेखा किए गए फ़्लैग की सूची
cURL पार्सर का उदाहरण
DevTools के एक्सपोर्ट को fetch में बदलना
इनपुट:
curl 'https://api.example.com/v1/orders' -H 'authorization: Bearer eyJ…' -H 'content-type: application/json' --data-raw '{"sku":"KB-100"}' --compressedआउटपुट:
const response = await fetch("https://api.example.com/v1/orders", {
method: "POST",
headers: {
"Authorization": "Bearer eyJ…",
"content-type": "application/json"
},
body: JSON.stringify({
"sku": "KB-100"
})
});cURL पार्सर के बारे में अक्सर पूछे जाने वाले सवाल
कौन-से cURL फ़्लैग समझे जाते हैं?
-X/--request, -H/--header, -d/--data/--data-raw/--data-binary/--data-urlencode, --json, -F/--form, -u/--user, --oauth2-bearer, --url, -A, -e, -b, -L, --compressed, -k, -I, -G, -m/--max-time, मिले-जुले शॉर्ट फ़्लैग (-sSL), --flag=value सिंटैक्स, $'…' quoting तथा bash, PowerShell और cmd की लाइन continuation। अनजान फ़्लैग "अनदेखा किए गए" के रूप में सूचीबद्ध हो जाते हैं।
कमांड में -X न होने पर भी मेथड POST क्यों है?
यह curl का अपना नियम है: कोई भी -d या -F विकल्प POST मान लिया जाता है, बशर्ते -G (डेटा क्वेरी के रूप में भेजना) या स्पष्ट -X न दिया गया हो। -I का मतलब HEAD होता है।
"Drop browser-only headers" क्या हटाता है?
वे हेडर जो ब्राउज़र अपने आप जोड़ते हैं और जो स्क्रिप्ट वाली रिक्वेस्ट को तोड़ते या भारी करते हैं: sec-ch-*, sec-fetch-*, user-agent, cookie, referer, origin, accept-language, accept-encoding, priority, cache-control और pragma। Authorization तथा Content-Type हमेशा रखे जाते हैं।
क्या Basic वाला Authorization हेडर डिकोड होता है?
हाँ। "Authorization: Basic …" को base64 से डिकोड करके यूज़रनेम और पासवर्ड निकाल लिया जाता है, ताकि बदला हुआ कोड क्लाइंट का अपना auth विकल्प इस्तेमाल कर सके; Bearer टोकन और X-API-Key हेडर भी पहचाने जाते हैं।
संदर्भ
- RFC 9110: HTTP SemanticsHTTP मेथड, हेडर फ़ील्ड, स्टेटस कोड और कंटेंट निगोशिएशन के अर्थ, वायर वर्ज़न से स्वतंत्र।
- HTTP headers — MDNरिक्वेस्ट और रिस्पॉन्स हेडर का संदर्भ: सिंटैक्स, डायरेक्टिव और ब्राउज़र सपोर्ट।
- RFC 7578: Returning Values from Forms: multipart/form-dataफ़ाइल अपलोड और मिश्रित फ़ॉर्म सबमिशन के लिए इस्तेमाल होने वाली multipart/form-data एन्कोडिंग।