将 curl 转换为 OCaml

使用 Cohttp 将 curl 命令转换为 OCaml 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Rust,请尝试我们的 curl 转 Rust 转换器。对于 Elixir,请参阅 curl 转 Elixir。下方是即插即用的 OCaml 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

    F12Ctrl+Shift+I 打开浏览器开发者工具。

  2. 2

    进入 Network 标签页

    点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。

  3. 3

    复制为 cURL

    右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。

常见问题解答

什么是 OCaml Cohttp?

Cohttp 是 OCaml 的标准 HTTP 客户端和服务器库。它支持 Lwt(轻量级线程)和 Async 后端进行并发 I/O。使用 opam install cohttp-lwt-unix 进行安装。它为 HTTP 请求提供类型安全且函数式的 API。curl2code 使用 Cohttp 进行所有 OCaml 转换。

Cohttp vs ocurl vs piaf — 该使用哪一个?

Cohttp 是支持 Lwt/Async 的标准 OCaml HTTP 库。ocurl 封装了 libcurl,允许从 OCaml 访问所有 curl 功能。piaf 较新,原生支持 HTTP/2。对于惯用 OCaml 开发,请使用 Cohttp;当需要 curl 特定功能时,请使用 ocurl。对于类似的函数式语言,请参阅 curl 转 Elixircurl 转 Clojure

如何在 OCaml 中处理身份验证?

在请求中添加 Authorization 标头:Header.add headers "Authorization" ("Bearer " ^ token)。对于 Basic 认证,使用 base64 包对凭据进行 base64 编码。Cohttp 标头是不可变的 —— 请使用 Header.of_list 构建它们或链式调用 Header.add

如何在 OCaml 中发送多部分表单数据 (multipart form data)?

手动使用边界字符串构建多部分主体,或使用 multipart_form 等库。设置带有边界的 Content-Type 标头。Cohttp 的主体是简单的字符串或流 —— 根据 RFC 2046 格式化多部分负载。curl2code 处理 -F 标志转换。

如何在 OCaml HTTP 请求中处理错误?

带有 Lwt 的 Cohttp 返回 promise —— 使用 Lwt.catchtry%lwt ... with 语法进行错误处理。使用 Response.status response 检查响应状态码。OCaml 的类型系统确保你处理失败情况。对状态码使用模式匹配以进行详尽的处理。

如何在 OCaml 中发起并发 HTTP 请求?

使用 Lwt 后端:使用 Lwt.all [request1; request2] 进行并行执行,或使用 Lwt_list.map_p 映射 URL。使用 Async:使用 Deferred.all。OCaml 通过 Lwt 或 Async 实现的协作式并发提供了安全、高效的并发 I/O,无需担心线程安全问题。

如何在 OCaml 中设置超时?

使用 Lwt 时,使用 Lwt.pick [request; Lwt_unix.sleep timeout >>= fun () -> Lwt.fail Timeout] 让请求与定时器竞争。Cohttp 没有内置超时选项 —— 请使用超时组合器封装 Lwt promise。对于重试,请实现一个减少尝试次数的递归函数。

如何在 OCaml 中使用代理?

Cohttp 没有内置代理支持。对于代理需求,请使用 ocurl (libcurl 绑定):设置 CURLOPT_PROXY 选项。或者,设置 HTTP_PROXY 环境变量,并手动配置连接以通过代理主机和端口路由。

如何在 OCaml 中发送带有 JSON 正文的 POST 请求?

使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 OCaml。生成的代码使用 Client.post ~body:(Cohttp_lwt.Body.of_string json) uri。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 Cohttp 代码中设置相应的 Content-Type 请求头。

如何在 OCaml 中添加 Bearer 令牌授权?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 Cohttp 代码:Header.add headers 'Authorization' 'Bearer YOUR_TOKEN'。curl2code 会从 -H "Authorization: Bearer ..."--oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass

如何在 OCaml 中设置 Content-Type 请求头?

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。

有用链接

curl 指南

将 curl 转换为其他语言