แปลง 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 จากนั้นนำมาวางด้านบน
คำถามที่พบบ่อย (FAQ)
OCaml Cohttp คืออะไร?
Cohttp เป็นไลบรารีมาตรฐานสำหรับ HTTP client และ server ใน OCaml รองรับทั้ง backends แบบ Lwt (lightweight threads) และ Async สำหรับ concurrent I/O ติดตั้งได้ด้วย opam install cohttp-lwt-unix โดยมี API แบบ functional ที่มีความปลอดภัยด้านประเภทข้อมูล (type-safe) สำหรับการส่ง HTTP requests ซึ่ง curl2code ใช้ Cohttp สำหรับการแปลงโค้ด OCaml ทั้งหมด
Cohttp vs ocurl vs piaf — ควรใช้ตัวไหน?
Cohttp เป็นไลบรารีมาตรฐานของ OCaml ที่รองรับ Lwt/Async ส่วน ocurl เป็นตัวหุ้ม libcurl ทำให้เข้าถึงฟีเจอร์ทั้งหมดของ curl ได้จาก OCaml และ piaf เป็นไลบรารีรุ่นใหม่ที่รองรับ HTTP/2 แบบ native ควรใช้ Cohttp สำหรับการเขียน OCaml แบบ idiomatic และใช้ ocurl เมื่อต้องการฟีเจอร์เฉพาะของ curl สำหรับภาษาแนว functional อื่นๆ ดูได้ที่ curl to Elixir หรือ curl to Clojure
จะจัดการการยืนยันตัวตน (authentication) ใน OCaml ได้อย่างไร?
เพิ่ม Authorization header ใน request: Header.add headers "Authorization" ("Bearer " ^ token) สำหรับ Basic auth ให้ใช้การเข้ารหัส base64 สำหรับข้อมูลประจำตัวโดยใช้แพ็กเกจ base64 ทั้งนี้ headers ของ Cohttp เป็นแบบ immutable ดังนั้นต้องสร้างด้วย Header.of_list หรือใช้การเรียก Header.add ต่อกันเป็นทอดๆ
จะส่ง multipart form data ใน OCaml ได้อย่างไร?
สร้าง multipart body ด้วยตัวเองพร้อมกำหนด boundary strings หรือใช้ไลบรารีอย่าง multipart_form แล้วตั้งค่า Content-Type header พร้อมกับ boundary โดย body ของ Cohttp เป็นเพียง string หรือ stream ธรรมดา คุณต้องจัดรูปแบบ multipart payload ตาม RFC 2046 ซึ่ง curl2code จะจัดการการแปลงแฟล็ก -F ให้โดยอัตโนมัติ
จะจัดการข้อผิดพลาดใน HTTP requests ของ OCaml ได้อย่างไร?
Cohttp ที่ใช้ Lwt จะคืนค่าเป็น promises ให้ใช้ไวยากรณ์ Lwt.catch หรือ try%lwt ... with ในการจัดการข้อผิดพลาด ตรวจสอบรหัสสถานะการตอบกลับด้วย Response.status response ระบบประเภทข้อมูลของ OCaml จะช่วยให้คุณมั่นใจว่าได้จัดการกรณีที่ล้มเหลวแล้ว และควรใช้ pattern matching กับรหัสสถานะเพื่อให้ครอบคลุมทุกกรณี
จะทำ HTTP requests แบบพร้อมกัน (concurrent) ใน OCaml ได้อย่างไร?
หากใช้ Lwt backend: ให้ใช้ Lwt.all [request1; request2] สำหรับการทำงานแบบขนาน หรือ Lwt_list.map_p สำหรับการ map ผ่านรายการ URLs หากใช้ 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] เพื่อแข่งกันระหว่าง request กับตัวจับเวลา เนื่องจาก Cohttp ไม่มีตัวเลือก timeout ในตัว จึงต้องหุ้ม Lwt promise ด้วย timeout combinator สำหรับการลองใหม่ (retries) ให้เขียนฟังก์ชันแบบ recursive ที่ลดจำนวนครั้งที่เหลือลง
จะใช้ proxy ใน OCaml ได้อย่างไร?
Cohttp ไม่มีระบบรองรับ proxy ในตัว ให้ใช้ ocurl (libcurl bindings) สำหรับความต้องการด้าน proxy โดยตั้งค่าตัวเลือก CURLOPT_PROXY หรืออีกวิธีคือตั้งค่า environment variable HTTP_PROXY และกำหนดค่าการเชื่อมต่อเพื่อส่งผ่าน proxy host และ port ด้วยตนเอง
วิธีส่งคำขอ POST พร้อม JSON body ใน 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 จะจับคู่แต่ละรายการเข้ากับ Cohttp API ที่ถูกต้อง