将 curl 转换为 Ruby

curl2code 使用标准 net/http 库将 curl 命令转换为 Ruby 代码。一切都通过 WebAssembly 在您的浏览器本地运行,以确保完全的隐私。如果您更喜欢 Python,请查看我们的 curl 转 Python 转换器。对于 Elixir,请参阅 curl 转 Elixir。下方是实用的 Ruby 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

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

  2. 2

    进入 Network 标签页

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

  3. 3

    复制为 cURL

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

常见问题解答

什么是 Ruby net/http?

Ruby 的 net/http 是每个 Ruby 安装中都包含的标准库 HTTP 客户端。它处理 GET、POST、多部分上传、SSL 和自定义请求头。无需安装 gem。curl2code 还支持 HTTParty,这是一个流行的 gem,通过简洁的声明式 API 简化了常见的 HTTP 模式。

net/http vs HTTParty vs Faraday —— 我应该使用哪一个?

net/http 是内置且无依赖的——非常适合简单的任务和脚本。HTTParty 提供简洁的 DSL 和自动 JSON 解析。Faraday 提供中间件、适配器模式和最大的灵活性。关于类似的脚本编写简洁性,请参阅我们的 curl 转 Python 转换器curl 转 PHP

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

使用 net/http:request["Authorization"] = "Bearer token"。对于 Basic 认证:request.basic_auth("user", "pass")。HTTParty 使用 headers: { "Authorization" => "Bearer token" }basic_auth: { username: "user", password: "pass" }。curl2code 处理 -u 和 header 标志。

如何在 Ruby 中发送多部分表单数据?

使用 net/http 时,使用 multipart-post gem 或使用带有边界字符串的 Net::HTTP::Post 手动构建多部分 body。HTTParty 通过 body: { file: File.open("path") } 简化了此操作。curl2code 为两种库变体转换 -F 标志。

如何在 Ruby 中处理 HTTP 错误?

使用 net/http 时,检查 response.is_a?(Net::HTTPSuccess) 或使用 response.value(它会在非 2xx 状态时抛出异常)。HTTParty 返回一个带有 .success?.code 方法的响应对象。对于持久连接,请捕获 Errno::ECONNREFUSEDNet::ReadTimeout

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

Ruby 的标准库是同步的。使用 Thread.new { ... } 进行基础并发,或使用 concurrent-ruby gem 处理线程池。对于异步 I/O,请使用 async-http 配合 Async gem。Typhoeus 提供并行请求队列。关于内置的异步支持,请参阅 curl 转 Elixir

如何在 Ruby 中设置超时?

使用 net/http:http.open_timeout = 10(连接)和 http.read_timeout = 30(响应)。HTTParty 接受 timeout: 30 选项。这些对应 curl 的 --connect-timeout--max-time。务必设置超时以避免请求无限期挂起。

如何在 Ruby 中使用代理?

使用 net/http:Net::HTTP.new(host, port, proxy_host, proxy_port)。或者设置 http_proxyhttps_proxy 环境变量——Ruby 会自动遵循这些变量。HTTParty 使用 http_proxy: 'http://proxy:8080' 选项。curl2code 会将 -x 标志转换为正确的 Ruby 语法。

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

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

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

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

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

curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 net/http 代码:req['Content-Type'] = 'application/json'。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 net/http API。

有用链接

curl 指南

将 curl 转换为其他语言