تحويل curl إلى OCaml
قم بتحويل أوامر curl إلى كود OCaml باستخدام Cohttp. يعمل curl2code بالكامل في متصفحك عبر WebAssembly — بياناتك تبقى خاصة. لـ Rust، جرب محول curl إلى Rust. لـ Elixir، راجع curl إلى Elixir. أدناه أمثلة OCaml جاهزة للاستخدام.
كيفية نسخ curl من متصفحك
- 1
افتح أدوات المطور (DevTools)
اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.
- 2
انتقل إلى علامة تبويب الشبكة (Network)
انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.
- 3
نسخ كـ cURL
انقر بزر الماوس الأيمن على الطلب ← Copy ← Copy as cURL. ثم قم بلصقه أعلاه.
الأسئلة الشائعة
ما هي مكتبة OCaml Cohttp؟
Cohttp هي المكتبة القياسية لعميل وخادم HTTP للغة OCaml. وهي تدعم كلاً من محركات Lwt (الخيوط خفيفة الوزن) و Async للإدخال والإخراج المتزامن. يمكن تثبيتها عبر opam install cohttp-lwt-unix. توفر المكتبة واجهة برمجة تطبيقات (API) وظيفية وآمنة من حيث النوع لطلبات HTTP. يستخدم curl2code مكتبة Cohttp لجميع تحويلات OCaml.
Cohttp مقابل ocurl مقابل piaf — أيهم أستخدم؟
Cohttp هي مكتبة OCaml القياسية لـ HTTP مع دعم Lwt/Async. ocurl هي غلاف لمكتبة libcurl، مما يتيح الوصول إلى جميع ميزات curl من OCaml. piaf هي مكتبة أحدث تدعم HTTP/2 بشكل أصلي. استخدم Cohttp للبرمجة بأسلوب OCaml الاصطلاحي، و ocurl عندما تحتاج إلى ميزات محددة في curl. للغات وظيفية مماثلة، راجع curl إلى Elixir أو curl إلى Clojure.
كيفية التعامل مع المصادقة في OCaml؟
أضف ترويسة Authorization إلى الطلب: Header.add headers "Authorization" ("Bearer " ^ token). بالنسبة للمصادقة الأساسية (Basic auth)، قم بتشفير بيانات الاعتماد بترميز base64 باستخدام حزمة base64. ترويسات Cohttp غير قابلة للتغيير (immutable) — قم ببنائها باستخدام Header.of_list أو عبر ربط استدعاءات Header.add.
كيفية إرسال بيانات النموذج متعدد الأجزاء (multipart) في OCaml؟
قم ببناء جسم الطلب متعدد الأجزاء يدويًا باستخدام سلاسل الحدود (boundary strings)، أو استخدم مكتبة مثل multipart_form. قم بتعيين ترويسة Content-Type مع الحدود. جسم الطلب في Cohttp هو سلسلة نصية بسيطة أو تدفق (stream) — قم بتنسيق حمولة multipart وفقًا لـ RFC 2046. يتعامل curl2code مع تحويل علم -F.
كيفية التعامل مع الأخطاء في طلبات HTTP في OCaml؟
تعيد Cohttp مع Lwt وعوداً (promises) — استخدم Lwt.catch أو صيغة try%lwt ... with للتعامل مع الأخطاء. تحقق من رمز حالة الاستجابة باستخدام Response.status response. يضمن نظام النوع في OCaml معالجة حالات الفشل. استخدم مطابقة الأنماط (pattern matching) على رموز الحالة لمعالجة شاملة.
كيفية إجراء طلبات HTTP متزامنة في OCaml؟
مع محرك Lwt: استخدم Lwt.all [request1; request2] للتنفيذ المتوازي أو Lwt_list.map_p للتكرار على عناوين URL. مع Async: استخدم Deferred.all. توفر التعددية التعاونية في OCaml من خلال Lwt أو Async إدخالاً وإخراجاً متزامناً آمناً وفعالاً دون مخاوف تتعلق بسلامة الخيوط (thread safety).
كيفية تعيين مهلة زمنية (timeout) في OCaml؟
مع Lwt، استخدم Lwt.pick [request; Lwt_unix.sleep timeout >>= fun () -> Lwt.fail Timeout] لعمل سباق بين الطلب والمؤقت. لا تحتوي Cohttp على خيارات مهلة مدمجة — قم بلف وعد Lwt بمجمع مهلة (timeout combinator). بالنسبة لإعادة المحاولة، قم بتنفيذ دالة عودية (recursive) مع تناقص عدد المحاولات.
كيفية استخدام وكيل (proxy) في OCaml؟
لا تدعم Cohttp الوكيل بشكل مدمج. استخدم ocurl (ارتباطات libcurl) لاحتياجات الوكيل: قم بتعيين خيار CURLOPT_PROXY. بدلاً من ذلك، قم بتعيين متغير البيئة HTTP_PROXY وتكوين الاتصال للتوجيه عبر مضيف ومنفذ الوكيل يدويًا.
كيف يمكن إرسال طلب POST مع جسم JSON في OCaml؟
قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL إلى OCaml باستخدام curl2code. يستخدم الكود الناتج Client.post ~body:(Cohttp_lwt.Body.of_string json) uri. يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود Cohttp.
كيف يمكن إضافة مصادقة Bearer token في OCaml؟
قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود Cohttp مع ترويسة المصادقة: Header.add headers 'Authorization' 'Bearer YOUR_TOKEN'. يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.
كيف يمكن ضبط ترويسة Content-Type في OCaml؟
يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود Cohttp مع الترويسة المناسبة: Header.add headers 'Content-Type' 'application/json'. بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في Cohttp.