curl 命令生成器

在表单中指定 HTTP 方法、URL、请求头、请求体和认证方式,即可生成可直接复制运行的 curl 命令。由于并不会真正发送请求,因此不受 CORS 限制。

常用 curl 选项一览

选项 说明
-X, --request <method> 指定 HTTP 方法(GET、POST、PUT、PATCH、DELETE 等)。省略时,无请求体默认为 GET,有请求体默认为 POST。
-H, --header <header> 添加一条请求头。如需添加多条,可重复使用 -H。
-d, --data <data> 发送请求体。若未指定 -X,会自动以 POST、Content-Type: application/x-www-form-urlencoded 的方式发送。
-u, --user <user:password> 以 "user:password" 格式指定 Basic 认证的用户名和密码。
-k, --insecure 跳过 SSL 证书验证。适用于使用自签名证书的开发环境,生产环境不建议使用。
-L, --location 当服务器返回 3xx 重定向时,自动跟随 Location 头指示的目标地址。
-v, --verbose 在标准错误输出中显示包含请求和响应头在内的详细通信过程,便于调试。
--compressed 附加 Accept-Encoding 头,请求并自动解压 gzip 等压缩格式的响应。
-o, --output <file> 将响应体保存到指定文件,而不是输出到标准输出。
-F, --form <name=content> 以 multipart/form-data 格式发送表单数据或文件。文件上传时指定 "@文件路径"。

由表单拼出 curl 命令

在表单里指明方法、网址、标头、请求体与认证方式,便得出一条可直接贴进终端执行的 curl 命令。**本工具并不真的发出请求,故不受浏览器的跨域限制**——即便是网页无从调用的接口,命令照样拼得出来。

**在 curl 上绊住人的,是方法与请求体之间的干系。** 以 `-d` 附上请求体,**方法便自动成了 POST,纵使您一字未写。** 于是想发 PUT 或 PATCH 却只给了 `-d`,射出去的便是一个意料之外的 POST。另一桩常见之误,是明明送的是 JSON 却忘了写 `Content-Type: application/json`;curl 于是按 `application/x-www-form-urlencoded` 送出,**服务端便压根不把它当 JSON 来读。** 把生成的命令贴进终端时,也请留心 shell 的引号:**单引号之内变量不会展开,双引号之内则会。**

使用方法

  1. 指明方法与网址 取用选 GET,送出选 POST。
  2. 添上标头 **若送的是 JSON,切莫忘了 `Content-Type: application/json`。**
  3. 写下请求体 **附上请求体后,未指明方法时便自动成为 POST。**
  4. 复制命令去执行 贴进终端即可,别无他求。

用好本工具的小技巧

  • 生成的命令可以直接粘贴到 终端、Shell 脚本或 CI/CD 配置文件 中运行,所有值均已用单引号转义完毕。
  • 如果方法仍为 GET 却输入了请求体,会显示警告。因为 curl 在省略 -X 而使用 -d 时会自动以 POST 方式发送,此提示可帮助你避免意料之外的行为。
  • 勾选"自动添加 Content-Type: application/json"后,会自动补上调用 JSON API 时容易遗漏的 Content-Type 头。
  • Basic 认证和 Bearer 令牌的输入值均仅在浏览器内处理,绝不会发送到任何服务器。
  • 生成的 -k(跳过证书验证)只是针对自签名证书本地开发环境的临时应对方案,请勿在生产环境的 API 中长期使用。

这些场景会用到

试探接口的行为

**网页调不动的接口,用 curl 仍试得出来,跨域拦不住它。**

把命令写进操作手册

可把一次请求的内容,记成人人都能复现的样子。

分享故障的复现步骤

**递给对方一条命令去跑,所得的复现受环境差异的影响小得多。**

学习 curl 的选项

可以看出表单里的每一项各自变成了哪个选项。

curl 的术语

-X
明确指明方法。**因 `-d` 即便不写也会成为 POST,故 PUT 与 DELETE 时非它不可。**
-H
添一条标头。写上数次,便添上数条。
-d
指明请求体。**写了它,方法便成为 POST,默认的内容类型则成了表单编码。**
-u
指明基本认证的用户名与口令,写作 `用户名:口令`。
Bearer 令牌
以 `Authorization: Bearer ...` 送出凭据的方式。极多接口都采此形。
-i 与 -v
显示响应标头,以及显示交互的细节。**二者在事情不灵时都值回票价。**

常见问题

不会。本工具仅用于拼装命令字符串,不会发送任何真实的 HTTP 请求。只有当你将生成的命令复制到终端并自行运行时,请求才会真正发出。如果想实际发送请求并查看结果,请使用姊妹工具"REST API 测试器"。

可以。只需将在 Postman 中构建的请求方法、URL、请求头和请求体输入本工具,即可生成可直接复制粘贴的 curl 命令,非常适合写入 CI/CD 脚本或文档。

技术上可行,但需要注意。当 curl 在省略 -X 选项的情况下使用 -d(请求体)时,会自动以 POST 方式发送。如果确实需要在保持 GET 的同时发送请求体,可在生成的命令后手动添加 -X GET。

不会。你输入的所有认证信息都仅在浏览器内由 JavaScript 处理,绝不会发送到 toolbase.cc 的服务器。只有当你在自己的环境中运行生成的命令时,才会由该环境直接发往目标 API。

"-k(--insecure)"用于跳过 SSL 证书验证,仅应作为使用自签名证书的本地开发环境的临时应对方案。若在生产环境或涉及敏感信息的通信中使用,会带来中间人攻击的风险,因此不建议使用。
工具君

闲话 ― 为什么 curl 是"人人都在用却几乎无人知晓"的工具

curl 是瑞典工程师丹尼尔·斯坦伯格(Daniel Stenberg)于 1996 年开发的一款通过 URL 传输数据的命令行工具。它最初源于为 IRC 聊天机器人获取汇率信息的一个小脚本,此后逐渐发展成支持 HTTP、FTP、SMTP 等 25 种以上协议的庞大项目。

curl 被认为是全球使用最广泛的软件之一。智能手机、汽车、家电、游戏机乃至航天器(NASA 的火星探测任务中也有使用记录)等几乎所有联网设备内部都嵌入了它,据估计其安装量高达数百亿台规模。尽管普及程度如此之高,它在开发者以外的人群中却几乎无人知晓,是"幕后功臣"的典型代表。

2019 年,斯坦伯格因对 Web 基础技术的贡献获得 Linux 基金会表彰。他至今仍是 curl 项目的核心维护者,二十多年来一直谨慎地推进开发,以避免破坏向后兼容性而著称。

即便在 Postman 等图形化工具普及的今天,curl 命令依然被广泛用于 README、官方文档和 API 调试步骤中。原因很简单:curl 无需安装,几乎预装在所有 Linux 和 macOS 环境中,只需一条命令即可当场执行并分享结果,这种极高的可复现性是其他工具难以取代的。