跳到内容

🌐 OpenAPI → cURL 命令生成

粘贴 OpenAPI 3.x YAML / JSON 规范,一键生成所有端点的可执行 cURL 命令。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式
🔒 隐私保障: OpenAPI 规范不会上传。所有解析和转换均在浏览器内完成。

生成的 cURL 命令

🔗 相关工具

📖 常见的坑

粘贴 OpenAPI 3.x 的 YAML / JSON,即可把全部端点一次性转换成可执行的 cURL 命令。解析在浏览器内完成,规格不会被上传。它所做的只是把规格文档里的描述机械地重组为命令并不保证照着敲就能跑通——产出的质量几乎完全取决于源规格里写了多少 example

情形 会发生什么 怎么处理
请求体是空的,或者只有 {} 原因几乎总是 $ref 指向了外部文件。像 $ref: "./schemas/user.yaml#/User" 这样的引用,仅凭你粘贴的这一个文件是无法解析的,而把 schema 拆到多个文件里,对稍具规模的 API 而言是常态,所以实务中这反而是多数情况。同一文件内的 #/components/schemas/User 可以解析,但 allOf / oneOf / anyOf 的组合无法完全展开——因为 oneOf 该选哪一支,规格本身并未规定。 粘贴之前先把规格「打包」成单个文件——npx @redocly/cli bundle openapi.yaml -o bundled.yamlnpx swagger-cli bundle openapi.yaml -o bundled.json -r 会把所有外部引用内联进来。这一步本来就值得放进 CI:打包失败即意味着引用损坏,因此它同时充当了规格的断链检查。若规格大量使用 allOf再加上 --dereferenced 彻底展开,生成的请求体会更接近实际该发送的形状。
生成的命令被 400 或 422 挡了回来 没有写 example 的属性,只能按类型机械地填充——字符串填 "string",数字填 0。可真实的 API 往往规定 status 只接受 "active""archived"created_at 必须是 date-time 格式,等等。因此返回 400 通常不是工具的缺陷,而是「规格里没写示例」的表现。enumformat 时可以读取,但「该值需与另一字段保持一致」这类约束在规格里根本无法表达,所以原理上就填不出来 正确的修法是往规格里补 example每补一个,Swagger UI 的示例、Mock 服务器的响应、生成客户端的测试都会一并受益。这不是为了迁就工具而做的杂活,而是 API 文档质量的直接提升。认证信息常常不写在规格里,请在本页的「认证头」栏中覆盖。返回 401 指向认证,返回 400 / 422 指向请求体,两类问题可以干净地分开——而加上 curl -v 查看实际发出的请求头,是分辨二者的最快途径
粘贴之后一条也没生成 看看文档开头是不是 swagger: "2.0"Swagger 2.0 是结构不同的另一套规格:服务器不是 servers,而是拆成 host + basePath + schemes 三项;请求体不在 requestBody,而在 parameters 里以 in: body 出现;媒体类型不在 content 下,而在顶层的 consumes这不是「只差个版本号」,而是每一处该读的位置都变了。另一个常见原因是 YAML 缩进坏掉——混入制表符时 YAML 必定解析失败。 请先转换到 3.x——npx swagger2openapi swagger.yaml -o openapi.yaml 正是做这件事,现有内容几乎可以机械迁移。自 2017 年 3.0 发布以来 Swagger 2.0 一直处于维护模式,这次转换迟早都要做。要判断是不是 YAML 的问题,把它转成 JSON 再粘贴一次,立刻就能分开两种情况YAML ⇔ JSON 转换)。JSON 能通过说明是缩进问题;JSON 也不行,那问题就出在规格版本或结构上。

不要把生成的命令原样交给别人。一旦覆盖了认证头,输出的每一条命令里都会以明文嵌入你真实的令牌——贴到 Slack、贴到 issue、写进文档,每一种都是凭据泄露。要分享时,请先换成环境变量,写成 -H "Authorization: Bearer $API_TOKEN"。即便只在自己机器上执行,整条命令也会以明文留在 shell 的历史文件里(在开头加一个空格,多数 shell 就不会记入历史)。还有一点:若规格的 servers 只有 /api/v1 这类相对 URL,主机就无法确定,命令原样是跑不起来的——请用本页的「基础 URL 覆盖」栏补上。

📖 使用方法

  1. 1
    粘贴 OpenAPI 规范
    粘贴 YAML 或 JSON 格式的 OpenAPI 3.x 规范。点击示例加载样例。
  2. 2
    配置选项
    可选覆盖基础 URL 或设置 Authorization 头。选择多行或单行输出。
  3. 3
    复制 cURL 命令
    每个端点显示为卡片,可通过复制按钮发送到剪贴板。

❓ 常见问题

支持 Swagger 2.0 吗?
主要支持 OpenAPI 3.x。Swagger 2.0 的基本路径与方法可用,但 $ref 解析仅部分支持。
请求体如何填充?
优先使用 requestBody 或属性的 example / default,否则按类型生成示例值。
生成的命令可以直接执行吗?
其中包含示例值和占位令牌,运行前请替换为真实参数与凭证。
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送