تحويل curl إلى Rust

يقوم curl2code بتحويل أوامر curl إلى كود Rust باستخدام crate reqwest. تتم عملية التحويل في متصفحك عبر WebAssembly لخصوصية تامة. لـ Go، راجع محول curl إلى Go. لـ C، راجع curl إلى C. أدناه أمثلة Rust عملية مع async/await.

كيفية نسخ curl من متصفحك

  1. 1

    افتح أدوات المطور (DevTools)

    اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.

  2. 2

    انتقل إلى علامة تبويب الشبكة (Network)

    انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.

  3. 3

    نسخ كـ cURL

    انقر بزر الماوس الأيمن على الطلب ← CopyCopy as cURL. ثم قم بلصقه أعلاه.

الأسئلة الشائعة

ما هي مكتبة reqwest في Rust؟

تعد reqwest أشهر عميل HTTP لـ Rust، وهي مبنية فوق hyper. توفر واجهات برمجة تطبيقات متزامنة (blocking) وغير متزامنة (async)، وتسلسلاً تلقائياً لـ JSON عبر serde، و TLS، وإدارة ملفات تعريف الارتباط، ودعم البروكسي. أضفها باستخدام cargo add reqwest --features json. إنها المكتبة الافتراضية التي يستخدمها curl2code لتحويلات Rust.

مقارنة بين reqwest و hyper و ureq — أيهما يجب أن أستخدم؟

تعد reqwest الخيار الأمثل لمعظم المشاريع — فهي عالية المستوى، وغنية بالميزات، وغير متزامنة. hyper منخفضة المستوى وتوفر أقصى قدر من التحكم (reqwest مبنية عليها). ureq هي عميل بسيط متزامن فقط ولا تعتمد على بيئة تشغيل غير متزامنة. لنهج مكتبة قياسية مماثل، راجع curl إلى Go أو curl إلى C.

كيفية التعامل مع المصادقة في Rust؟

لـ Bearer: client.get(url).bearer_auth(token). لـ Basic: client.get(url).basic_auth(user, Some(pass)). أو اضبط الترويسات يدوياً باستخدام .header("Authorization", value). يحول curl2code أعلام -u و -H 'Authorization: ...' إلى دوال reqwest المناسبة.

كيفية إرسال بيانات نموذج متعدد الأجزاء في Rust؟

استخدم reqwest::multipart::Form: أنشئ بـ Form::new()، وأضف حقول النص بـ .text("key", "value")، والملفات بـ .file("field", path).await?. مررها إلى client.post(url).multipart(form). يتعامل curl2code مع أعلام -F لبيانات reqwest متعددة الأجزاء.

كيفية التعامل مع أخطاء HTTP في Rust؟

تعيد reqwest نوع Result يغلف Response عند النجاح أو reqwest::Error عند الفشل — استخدم عامل التشغيل ? لنشر الخطأ. تحقق من response.status().is_success() أو استدعِ response.error_for_status()? التي تحوّل أكواد الحالة غير 2xx إلى أخطاء. يضمن نظام الأنواع في Rust معالجة جميع مسارات الأخطاء صراحةً في وقت التجميع.

ما هي بيئة التشغيل غير المتزامنة التي تحتاجها reqwest؟

تتطلب reqwest بيئة تشغيل tokio افتراضياً. قم بتمييز الدالة الرئيسية بـ #[tokio::main]. للاستخدام المتزامن دون بيئة تشغيل غير متزامنة، قم بتمكين ميزة blocking واستخدم reqwest::blocking::Client. ينتج curl2code كوداً غير متزامن مع tokio افتراضياً. لنظام بيئي غير متزامن آخر، راجع curl إلى Go (goroutines).

كيفية ضبط المهلات في reqwest في Rust؟

اضبطها على العميل: Client::builder().timeout(Duration::from_secs(30)).connect_timeout(Duration::from_secs(10)).build()?. لكل طلب: client.get(url).timeout(Duration::from_secs(5)). هذه تقابل أعلام --max-time و --connect-timeout في curl.

كيفية استخدام بروكسي مع reqwest؟

اضبط بروكسي في builder الخاص بالعميل: Client::builder().proxy(Proxy::https("http://proxy:8080")?).build()?. تدعم بروكسيات HTTP و HTTPS و SOCKS5. تحترم reqwest أيضاً متغيرات البيئة HTTP_PROXY و HTTPS_PROXY افتراضياً. يحول curl2code أعلام -x إلى تكوين البروكسي.

كيف يمكن إرسال طلب POST مع جسم JSON في Rust؟

قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL إلى Rust باستخدام curl2code. يستخدم الكود الناتج client.post(url).json(&data).send().await?. يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود reqwest.

كيف يمكن إضافة مصادقة Bearer token في Rust؟

قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود reqwest مع ترويسة المصادقة: .bearer_auth("YOUR_TOKEN"). يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.

كيف يمكن ضبط ترويسة Content-Type في Rust؟

يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود reqwest مع الترويسة المناسبة: .header("Content-Type", "application/json"). بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في reqwest.

روابط مفيدة

أدلة curl

تحويل curl إلى لغات أخرى