curl to Rust कन्वर्टर
अपने ब्राउज़र में ही एक curl कमांड को तुरंत Rust reqwest कोड में बदलें। कमांड आपकी डिवाइस पर ही रहता है।
आपका curl कमांड आपके ब्राउज़र में ही स्थानीय रूप से Rust में बदला जाता है और कभी अपलोड नहीं होता, लेकिन किसी भी टूल में असली प्रोडक्शन टोकन या क्रेडेंशियल पेस्ट करने से बचें।
curl को JavaScript fetch में भी बदलें
cURL to Rust के बारे में
cURL to Rust एक ऐसा curl कमांड लेता है जिसे आपने टर्मिनल, ब्राउज़र DevTools, या API डॉक्यूमेंटेशन से कॉपी किया है, और उसे reqwest क्रेट पर आधारित एक async Rust प्रोग्राम के रूप में फिर से लिखता है। यह -X, -H, -d, --data-raw, --json, -u, और -G जैसे फ्लैग्स पढ़ता है, सही reqwest::Method चुनता है, और मान्य JSON बॉडी के लिए .json(...) या फॉर्म/रॉ पेलोड के लिए .body(...) चुनता है ताकि रिक्वेस्ट वही हो जो curl वास्तव में भेजता। एक -u/--user फ्लैग को मैन्युअल हेडर के बजाय एक मुहावरेदार .basic_auth(...) कॉल में बदला जाता है। यह तब उपयोगी होता है जब आप किसी क्विक API टेस्ट को Rust सर्विस, CLI टूल, या इंटीग्रेशन टेस्ट में पोर्ट कर रहे हों, बिना reqwest का बॉयलरप्लेट हाथ से लिखे। पूरा कन्वर्जन आपके ब्राउज़र में ही होता है, इसलिए curl कमांड और उसमें मौजूद कोई भी टोकन स्थानीय रूप से आपकी डिवाइस पर प्रोसेस होते हैं और कभी अपलोड नहीं होते।
विशेषताएँ
- #[tokio::main] और reqwest::Client से जुड़ा एक async fn main() जनरेट करता है
- curl के method को मेल खाते reqwest::Method से मैप करता है, कस्टम verbs सहित
- हर -H/--header फ्लैग से एक HeaderMap बनाता है
- मान्य JSON बॉडी के लिए .json(&serde_json::json!(...)) और फॉर्म/रॉ पेलोड के लिए .body(...) उपयोग करता है
- -u/--user को एक मुहावरेदार .basic_auth(username, Some(password)) कॉल में बदलता है
- JSON बॉडी को प्रेटी-प्रिंट करता है ताकि literal पढ़ना और एडिट करना आसान हो
- उन फ्लैग्स के बारे में चेतावनी देता है जिनका reqwest में कोई समकक्ष नहीं है, जैसे -k और आउटपुट-टू-फ़ाइल विकल्प
- एक क्लिक में परिणाम कॉपी करें या request.rs के रूप में डाउनलोड करें
cURL to Rust का उपयोग कैसे करें
- अपना curl कमांड cURL कमांड बॉक्स में पेस्ट करें।
- आउटपुट पैनल में जनरेट हुए Rust reqwest प्रोग्राम को पढ़ें।
- यदि कोई फ्लैग एडजस्ट या स्किप हुई हो तो चेतावनी बैनर देखें।
- कॉपी पर क्लिक करें, या कोड को request.rs के रूप में डाउनलोड करें।
उदाहरण
इनपुट
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"Ada"}'
आउटपुट
use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();
let mut headers = HeaderMap::new();
headers.insert(HeaderName::from_bytes(b"Content-Type")?, HeaderValue::from_str("application/json")?);
let response = client
.request(reqwest::Method::POST, "https://api.example.com/users")
.headers(headers)
.json(&serde_json::json!({
"name": "Ada"
}))
.send()
.await?;
println!("{}", response.status());
let body = response.text().await?;
println!("{}", body);
Ok(())
}
एक JSON बॉडी को .json(...) के साथ पास किया जाता है ताकि reqwest उसे आपके लिए सीरियलाइज़ कर दे।
सामान्य त्रुटियाँ और समस्या निवारण
- आउटपुट में .json(...) की जगह .body(...) दिख रहा है। — बॉडी को --json के साथ भेजें या -H "Content-Type: application/json" जोड़ें ताकि कन्वर्टर इसे JSON पहचान कर .json(...) पर स्विच कर सके।
- कंपाइल करते समय serde_json या tokio क्रेट न मिलने की एरर आती है। — अपने Cargo.toml में reqwest (json फीचर के साथ), serde_json, और tokio (full फीचर के साथ) को डिपेंडेंसी के रूप में जोड़ें; जनरेट किया गया कोड इन्हीं क्रेट्स पर निर्भर करता है।
- JSON बॉडी ऑब्जेक्ट लिटरल की बजाय एक quoted string के रूप में आती है। — ऐसा तब होता है जब बॉडी मान्य JSON नहीं होती। JSON ठीक करें, या उसे string के रूप में रखें और .body(...) के साथ भेजें।
- curl कमांड में -u इस्तेमाल करने के बावजूद .basic_auth(...) कॉल गायब है। — पुष्टि करें कि -u की वैल्यू ठीक user:pass फॉर्मेट में है। कन्वर्टर आंतरिक रूप से जनरेट किए गए Basic auth हेडर को डिकोड करके यूज़रनेम और पासवर्ड वापस निकालता है।
अक्सर पूछे जाने वाले प्रश्न
- मैं curl कमांड को Rust में कैसे बदलूं?
- curl कमांड को इनपुट बॉक्स में पेस्ट करें और cURL to Rust दाईं ओर एक async reqwest प्रोग्राम रेंडर करता है, जिसे आप कॉपी कर सकते हैं या request.rs के रूप में डाउनलोड कर सकते हैं।
- क्या cURL to Rust, reqwest या किसी अन्य HTTP क्लाइंट के लिए कोड जनरेट करता है?
- यह लोकप्रिय reqwest क्रेट को tokio async runtime के साथ टारगेट करता है और #[tokio::main] का उपयोग करते हुए एक async fn main() जनरेट करता है। कोड चलाने से पहले दोनों क्रेट्स को अपने Cargo.toml में जोड़ें।
- कन्वर्टर कब .json(...) और कब .body(...) उपयोग करता है?
- जब बॉडी मान्य JSON हो (--json या JSON Content-Type के साथ भेजी गई हो) तो यह .json(&serde_json::json!(...)) उपयोग करता है, और फॉर्म-एन्कोडेड या रॉ स्ट्रिंग बॉडी के लिए .body(...) उपयोग करता है।
- Rust आउटपुट में curl -u बेसिक ऑथ वैल्यू कैसे हैंडल होती है?
- एक -u या --user वैल्यू को request builder पर .basic_auth(username, Some(password)) के रूप में दर्शाया जाता है, न कि हाथ से बनाए गए Authorization हेडर के रूप में।
- क्या Rust में बदलते समय मेरा curl कमांड कहीं अपलोड होता है?
- नहीं। curl to Rust कन्वर्जन पूरी तरह आपके ब्राउज़र में ही होता है, इसलिए कमांड और उसमें मौजूद कोई भी क्रेडेंशियल आपकी डिवाइस पर ही रहता है।
- जनरेट हुआ reqwest कोड किन क्रेट्स पर निर्भर करता है?
- आउटपुट को डिपेंडेंसी के रूप में reqwest (json फीचर के साथ), serde_json, और tokio (full फीचर के साथ) चाहिए; कंपाइल करने से पहले इन्हें cargo add से जोड़ें।
संबंधित टूल
सभी ArrayKit टूल