将 curl 转换为 Clojure
curl2code 使用 clj-http 将 curl 命令转换为 Clojure 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于 Elixir,请查看我们的 curl 转 Elixir 转换器。对于 Java,请参阅 curl 转 Java。下方是实用的 Clojure 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 clj-http?
clj-http 是 Clojure 最流行的 HTTP 客户端库,包装了 Apache HttpComponents。它提供了一个地道的、数据驱动的 API,具有自动 JSON/EDN 解析、Cookie 管理和连接池功能。添加到 project.clj:[clj-http "3.x"]。curl2code 为所有 Clojure 转换使用 clj-http。
clj-http 对比 http-kit 对比 aleph —— 该用哪一个?
clj-http 是同步的,功能丰富且使用最广。http-kit 轻量级且支持异步,非常适合同时也发起 HTTP 调用的服务器。aleph 构建在 Netty 之上,用于高性能异步 I/O。有关类似的函数式语言,请参阅我们的 curl 转 Elixir 转换器 或 curl 转 OCaml。
如何在 Clojure 中处理身份验证?
对于 Bearer 认证,添加请求头:(client/get url {:headers {"Authorization" "Bearer token"}'})。对于 Basic 认证,使用内置选项:{:basic-auth ["user" "pass"]}。clj-http 还支持 OAuth 和摘要认证。curl2code 将 -u 和请求头标志转换为地道的 Clojure map。
如何在 Clojure 中发送多部分表单数据?
使用 :multipart 选项:(client/post url {:multipart [{:name "file" :content (clojure.java.io/file "doc.pdf")} {:name "desc" :content "My file"}]})。clj-http 自动处理边界生成和 Content-Type。curl2code 将 -F 标志转换为此 Clojure 模式。
如何在 Clojure 中处理 HTTP 错误?
默认情况下,clj-http 会在非 2xx 响应时抛出 ExceptionInfo。使用 {:throw-exceptions false} 禁用此行为以获取响应 map。检查 (:status response)。使用 try/catch 配合 ex-data 从异常中提取响应。
如何在 Clojure 中发起异步 HTTP 请求?
使用带有 clj-http 的 {:async? true},它会返回一个 future。或者使用 http-kit:(http/get url callback)。对于并行请求,使用 pmap 或 core.async 通道。Clojure future 运行在 JVM 线程池上。有关类似的并发处理,请参阅 curl 转 Java。
如何在 Clojure 中设置超时?
传递超时选项:(client/get url {:connection-timeout 10000 :socket-timeout 30000})。数值单位为毫秒。对于重试,使用 :retry-handler 选项或将其包装在具有指数退避的自定义重试函数中。这些对应于 curl 的 --connect-timeout 和 --max-time。
如何在 Clojure 中使用代理?
在选项 map 中设置代理:(client/get url {:proxy-host "proxy" :proxy-port 8080})。对于需要认证的代理:添加 :proxy-user 和 :proxy-pass。clj-http 还支持 SOCKS 代理。curl2code 将 -x 和 --proxy 标志转换为正确的 Clojure 代理选项。
如何在 Clojure 中发送带有 JSON 正文的 POST 请求?
使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 Clojure。生成的代码使用 (client/post url {:content-type :json :body (json/generate-string data)})。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 clj-http 代码中设置相应的 Content-Type 请求头。
如何在 Clojure 中添加 Bearer 令牌授权?
将 curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 clj-http 代码::headers {'Authorization' 'Bearer YOUR_TOKEN'}。curl2code 会从 -H "Authorization: Bearer ..." 和 --oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass。
如何在 Clojure 中设置 Content-Type 请求头?
curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 clj-http 代码::content-type :json。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 clj-http API。