将 curl 转换为 Rust

curl2code 使用 reqwest crate 将 curl 命令转换为 Rust 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于 Go,请查看我们的 curl 转 Go 转换器。对于 C,请参阅 curl 转 C。下方是带有 async/await 的实用 Rust 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

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

  2. 2

    进入 Network 标签页

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

  3. 3

    复制为 cURL

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

常见问题解答

什么是 Rust reqwest?

reqwest 是 Rust 中最受欢迎的 HTTP 客户端,构建在 hyper 之上。它提供阻塞和异步 API、通过 serde 实现的自动 JSON 序列化、TLS、Cookie 处理和代理支持。使用 cargo add reqwest --features json 添加。它是 curl2code 进行 Rust 转换时使用的默认库。

reqwest vs hyper vs ureq —— 我应该使用哪一个?

对于大多数项目,reqwest 是首选——高层级、功能丰富且支持异步。hyper 是更底层的,提供最大程度的控制(reqwest 构建于其上)。ureq 是一个极简的、仅支持阻塞的客户端,没有异步运行时依赖。关于类似的标准库方案,请参阅 curl 转 Gocurl 转 C

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

对于 Bearer 认证:client.get(url).bearer_auth(token)。对于 Basic 认证:client.get(url).basic_auth(user, Some(pass))。或者使用 .header("Authorization", value) 手动设置请求头。curl2code 会将 -u-H 'Authorization: ...' 标志转换为相应的 reqwest 方法。

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

使用 reqwest::multipart::Form:使用 Form::new() 创建,使用 .text("key", "value") 添加文本字段,使用 .file("field", path).await? 添加文件。传递给 client.post(url).multipart(form)。curl2code 处理 reqwest 多部分的 -F 标志。

如何在 Rust 中处理 HTTP 错误?

reqwest 返回 Result,成功时包装 Response,失败时包装 reqwest::Error —— 使用 ? 运算符进行传播。检查 response.status().is_success() 或调用 response.error_for_status()?,后者会将非 2xx 状态码转换为错误。Rust 的类型系统确保所有错误路径在编译时都得到显式处理。

reqwest 需要哪种异步运行时?

reqwest 默认需要 tokio 运行时。在 main 函数上标注 #[tokio::main]。对于不需要异步运行时的阻塞用法,启用 blocking 特性并使用 reqwest::blocking::Client。curl2code 默认生成带有 tokio 的异步代码。关于另一个异步生态系统,请参阅 curl 转 Go (goroutines)。

如何在 Rust reqwest 中设置超时?

在客户端上设置:Client::builder().timeout(Duration::from_secs(30)).connect_timeout(Duration::from_secs(10)).build()?。针对单个请求:client.get(url).timeout(Duration::from_secs(5))。这些对应 curl 的 --max-time--connect-timeout 标志。

如何在 reqwest 中使用代理?

在客户端构建器上设置代理:Client::builder().proxy(Proxy::https("http://proxy:8080")?).build()?。支持 HTTP、HTTPS 和 SOCKS5 代理。reqwest 默认也遵循 HTTP_PROXYHTTPS_PROXY 环境变量。curl2code 会将 -x 标志转换为代理配置。

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

使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 命令转换为 Rust。生成的代码使用 client.post(url).json(&data).send().await?。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 reqwest 代码中设置相应的 Content-Type 请求头。

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

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

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

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

有用链接

curl 指南

将 curl 转换为其他语言