המרת curl ל-OCaml

המר פקודות curl לקוד OCaml באמצעות Cohttp. curl2code רץ כולו בדפדפן שלך דרך WebAssembly — המידע שלך נשאר פרטי. עבור Rust, נסה את ממיר curl ל-Rust. עבור Elixir, ראה curl ל-Elixir. להלן דוגמאות OCaml מוכנות לשימוש.

איך להעתיק curl מהדפדפן שלך

  1. 1

    פתח את DevTools

    לחץ על F12 או על Ctrl+Shift+I כדי לפתוח את כלי המפתחים של הדפדפן.

  2. 2

    עבור ללשונית Network

    לחץ על לשונית ה-Network ובצע את הפעולה שמפעילה את בקשת ה-HTTP.

  3. 3

    העתק כ-cURL

    לחץ קליק ימני על הבקשה ← CopyCopy as cURL. לאחר מכן הדבק אותה למעלה.

שאלות נפוצות (FAQ)

מה זה OCaml Cohttp?

Cohttp היא ספריית הסטנדרט ללקוח ושרת HTTP עבור OCaml. היא תומכת הן ב-Lwt (תהליכונים קלי משקל) והן ב-Async כ-backends עבור I/O מקבילי. התקן באמצעות opam install cohttp-lwt-unix. היא מספקת API פונקציונלי ו-type-safe לבקשות HTTP. curl2code משתמש ב-Cohttp עבור כל המרות ה-OCaml.

Cohttp לעומת ocurl לעומת piaf — במה להשתמש?

Cohttp היא ספריית ה-HTTP הסטנדרטית של OCaml עם תמיכה ב-Lwt/Async. ocurl עוטפת את libcurl, ומאפשרת גישה לכל תכונות curl מתוך OCaml. piaf היא חדשה יותר ותומכת ב-HTTP/2 באופן טבעי. השתמש ב-Cohttp עבור OCaml אידיומטי, וב-ocurl כשאתה זקוק לתכונות ספציפיות של curl. לשפות פונקציונליות דומות, ראה curl ל-Elixir או curl ל-Clojure.

איך מטפלים באימות (authentication) ב-OCaml?

הוסף כותרת Authorization לבקשה: Header.add headers "Authorization" ("Bearer " ^ token). עבור Basic auth, בצע קידוד base64 לפרטי האימות באמצעות חבילת base64. כותרות ב-Cohttp הן immutable — בנה אותן עם Header.of_list או שרשר קריאות ל-Header.add.

איך שולחים multipart form data ב-OCaml?

בנה את גוף ה-multipart ידנית עם מחרוזות boundary, או השתמש בספרייה כמו multipart_form. הגדר את כותרת Content-Type עם ה-boundary. הגוף ב-Cohttp הוא מחרוזת פשוטה או stream — עצב את ה-payload של ה-multipart לפי RFC 2046. curl2code מטפל בהמרת דגל -F.

איך מטפלים בשגיאות בבקשות HTTP ב-OCaml?

Cohttp עם Lwt מחזירה promises — השתמש ב-Lwt.catch או בתחביר try%lwt ... with לטיפול בשגיאות. בדוק את קוד הסטטוס של התגובה עם Response.status response. מערכת הטיפוסים של OCaml מבטיחה שתטפל במקרי כשל. השתמש ב-pattern matching על קודי סטטוס לטיפול מקיף.

איך מבצעים בקשות HTTP מקביליות ב-OCaml?

עם Lwt backend: השתמש ב-Lwt.all [request1; request2] לביצוע מקבילי או ב-Lwt_list.map_p למיפוי על פני כתובות URL. עם Async: השתמש ב-Deferred.all. המקביליות השיתופית (cooperative concurrency) של OCaml דרך Lwt או Async מספקת I/O מקבילי בטוח ויעיל ללא חששות של thread safety.

איך מגדירים timeouts ב-OCaml?

עם Lwt, השתמש ב-Lwt.pick [request; Lwt_unix.sleep timeout >>= fun () -> Lwt.fail Timeout] כדי להריץ בקשה מול טיימר. ל-Cohttp אין אפשרויות timeout מובנות — עטוף את ה-Lwt promise עם קומבינטור timeout. עבור ניסיונות חוזרים (retries), ממש פונקציה רקורסיבית עם מספר ניסיונות פוחת.

איך משתמשים ב-proxy ב-OCaml?

ל-Cohttp אין תמיכה מובנית ב-proxy. השתמש ב-ocurl (קישורי libcurl) לצרכי proxy: הגדר את האופציה CURLOPT_PROXY. לחלופין, הגדר את משתנה הסביבה HTTP_PROXY והגדר את החיבור לניתוב דרך ה-host וה-port של ה-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 tokens גם מדגלי -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.

קישורים שימושיים

מדריכי curl

המרת curl לשפות אחרות