卷曲到代码

将 cURL 命令转换为 JavaScript、Python、Go、PHP、Rust 等。

免费在线 cURL 到代码转换器

API 文档通常将示例显示为 cURL 命令。 Dokall 将这些命令转换为 JavaScript fetch、Python requests、Go、PHP、Rust 以及其他可以直接粘贴到项目中的语言片段。

从浏览器 DevTools 或 API 文档中粘贴 cURL 命令,选择目标语言,然后复制生成的代码。节省 API 集成原型设计的时间。

什么是 cURL?

cURL(Client URL)是一个用于通过 URL 传输数据的命令行工具。它支持 HTTP、HTTPS、FTP 以及许多其他协议。在大多数系统上它已预装——你可以在 macOS、Linux 或 Windows(PowerShell)的任意终端中运行 curl。

cURL 是 API 文档的通用语言。当 API 展示示例请求时,几乎总是一条 cURL 命令。浏览器开发者工具允许你将任意网络请求复制为 cURL。这使 cURL 成为分享和复现 HTTP 请求的通用格式,即使你在生产代码中从不直接使用 cURL。

常用 cURL 选项

-X(或 --request)设置 HTTP 方法:-X POST、-X PUT、-X DELETE。未指定方法时默认为 GET。

-H(或 --header)添加请求头:-H "Content-Type: application/json" -H "Authorization: Bearer token123"。

-d(或 --data)发送请求体并隐含 POST:-d '{"name":"test"}'。使用 --data-raw 发送字面数据,不会把 @ 解释为文件引用。

-F(或 --form)发送 multipart 表单数据:-F "file=@photo.jpg" -F "caption=My photo"。每个 -F 标志添加一个表单字段。

-o(或 --output)将响应保存到文件:-o response.json。-O 使用远程文件名。

-v(或 --verbose)显示完整的请求和响应头——对调试极有价值。

-s(或 --silent)隐藏进度条。-S(或 --show-error)即使在静默模式下也显示错误。可组合使用:-sS。

-L(或 --location)跟随重定向。不加该选项时,cURL 返回 301/302 响应而不是跟随重定向。

从浏览器复制 cURL 命令

所有现代浏览器都允许将网络请求复制为 cURL 命令。在 Chrome、Firefox 或 Edge 中:打开开发者工具(F12),进入 Network 面板,发起要捕获的请求,右键该请求,选择「Copy as cURL」。

复制的命令包含 URL、方法、所有请求头(包括 cookie 和认证令牌)以及请求体。这是在代码中复现浏览器请求,或与同事分享以便调试的最快方式。

重要提示:复制的命令常常包含会话 cookie 和授权令牌。分享前请移除敏感请求头。粘贴到文档或聊天时,用「Bearer YOUR_TOKEN_HERE」等占位符替换真实令牌。

用 cURL 进行 API 测试

cURL 是无需写代码即可测试 API 端点的最快方式。从 API 文档中的示例 cURL 命令入手,修改参数后在终端运行。

对于 JSON API,请包含 Content-Type 请求头:curl -X POST -H "Content-Type: application/json" -d '{"email":"test@example.com"}' https://api.example.com/users。

要同时查看响应头和响应体,添加 -i。要查看完整的请求/响应交换,添加 -v。要格式化 JSON 输出,通过 jq 管道:curl -s https://api.example.com/users | jq .

测试需要认证的 API 时,将令牌存入变量:TOKEN="your_token",然后引用:curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me。这样可保持命令历史干净,也便于切换令牌。

从 cURL 到生产代码

在终端中可用的 cURL 命令是一份已验证的请求规范——你知道端点、请求头、方法和请求体都正确。接下来是将其转换为所用语言的 HTTP 客户端。

Dokall 可将 cURL 转换为 JavaScript(fetch 和 axios)、Python(requests 和 http.client)、Go(net/http)、PHP(cURL 扩展)、Rust(reqwest)等。生成的代码会按各语言约定处理请求头格式、请求体序列化和方法指定。

转换后请审阅生成的代码并按生产环境调整:添加错误处理、设置超时、用环境变量存放 API 密钥(切勿硬编码密钥)、为瞬时失败实现重试逻辑,并添加日志。转换后的代码是起点——并非可直接上线的生产代码。

对于常用的 API 调用,将转换后的代码封装为带类型参数和返回值的函数。这样可形成清晰的 API 客户端,应用其他部分无需了解 HTTP 细节即可调用。

常见问题

cURL 代表什么?
cURL 代表「Client URL」(最初意为「see URL」)。它由 Daniel Stenberg 于 1998 年创建,是世界上安装最广泛的软件工具之一。该项目既包含 curl 命令行工具,也包含被数千个应用使用的 libcurl 库。
如何从 Chrome DevTools 复制 cURL 命令?
打开开发者工具(F12,Mac 上为 Cmd+Option+I),进入 Network 面板,触发要捕获的请求,在列表中右键该请求,选择「Copy」再选「Copy as cURL」。命令包含完整 URL、请求头、cookie、方法和请求体。分享前请移除敏感令牌。
cURL 中 -d 与 --data-raw 有什么区别?
使用 -d(或 --data)时,若值以 @ 开头,cURL 会从文件读取数据:-d @payload.json 发送 payload.json 的内容。--data-raw 将值视为字面数据,即使以 @ 开头:--data-raw '@username' 发送字面字符串 @username。当数据可能包含 @ 字符时,请使用 --data-raw。
如何用 cURL 发送 JSON?
设置 Content-Type 请求头并传入 JSON 请求体:curl -X POST -H "Content-Type: application/json" -d '{"name":"test","value":42}' https://api.example.com/items。在 Windows 上,使用双引号并转义内部引号:-d "{\"name\":\"test\"}",或使用文件形式的 --data-raw:--data-raw @payload.json。
如何将 cURL 与认证一起使用?
Bearer 令牌:-H "Authorization: Bearer YOUR_TOKEN"。Basic 认证:-u username:password(cURL 会自动进行 Base64 编码)。请求头中的 API 密钥:-H "X-API-Key: YOUR_KEY"。OAuth:流程因提供商而异,但最终 API 调用通常使用 Bearer 令牌。
cURL 能跟随重定向吗?
可以,添加 -L(或 --location)标志。默认情况下,cURL 返回重定向响应(301、302)而不跟随。使用 -L 时,cURL 会跟随重定向链,直至默认上限(50 次)。可用 --max-redirs 设置自定义上限:-L --max-redirs 5。
如何将 cURL 输出保存到文件?
使用 -o 指定文件名:curl -o response.json https://api.example.com/data。使用 -O 以远程文件名保存(从 URL 推导)。要同时保存请求头和响应体,使用 -D headers.txt -o body.json。要同时在终端查看并保存到文件,通过 tee 管道:curl https://api.example.com/data | tee response.json。