跳到主内容
UniKit

OpenAPI 规范验证

在浏览器本地校验 OpenAPI 3.x / Swagger 2.0 文档:检查 openapi/info/paths 必填字段、版本号格式、path 是否以 / 开头、每个 operation 的 responses 是否非空、参数是否完整,以及 $ref 能否在文档内解析,结果按 JSON Pointer 路径列出。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

校验结果

粘贴一份 OpenAPI / Swagger 文档即可开始校验

这个工具能做什么

  • 提交接口文档前先自查一遍:必填字段、版本号、path 写法和 responses 有没有漏,避免评审时才被打回。
  • 排查为什么某个代码生成器 / 网关不认这份文档:结构类问题(缺字段、path 不以 / 开头、responses 为空)通常就是原因。
  • 确认文档里的 $ref 没有指向已删除的 schema:本工具会在文档内部解析每一个引用,指不到就报错并给出位置。
  • 接手别人的 Swagger 2.0 文档时快速摸底:一眼看出有多少 path、多少 operation、多少 schema。

示例

输入

openapi: 3.0.0
info:
  title: Pet store
paths:
  pets:
    get:
      summary: list pets

输出

/info/version [错误] info.version 缺失或为空
/paths/pets [错误] path 必须以 / 开头:pets
/paths/pets/get/responses [错误] operation 缺少 responses

每条问题都带 JSON Pointer 位置(如 /paths/pets/get/responses),可以直接定位到文档里的那一行。

常见问题

它会联网校验吗?

不会,一次网络请求都不发。校验完全基于你粘贴的这份文档:外部 $ref(如 ./shared.yaml#/Pet)只提示「不会去解析」,文档内部引用(#/components/schemas/X)则真的按 JSON Pointer 去解析并检查目标是否存在。

为什么 errors 为 0 但仍有 warnings?

warnings 是不会让文档失效、但很可能不是你本意的写法:空 paths、可疑的响应码(比如 9999)、重复的 operationId、外部 $ref。它们不影响 valid 判定,但值得改掉。

必填字段到底有哪些?

按规范是 openapi(Swagger 2.0 则是 swagger)、info、paths,以及 info 里的 title 和 version。本工具把这几项都当作错误;info 之外的东西(servers、tags、security)都是可选的,不做检查。

支持 OpenAPI 3.1 吗?

支持,版本号接受 3.x[.y] 以及带后缀的写法(如 3.1.0-rc1)。3.1 里 paths 允许为空,所以这种情况只给警告而不是错误。

文档会被上传吗?

不会。解析与校验全部在浏览器里用 JavaScript 完成,页面不发起任何网络请求,断网也能用,文档内容不会被记录。

关键词:openapi 验证swagger 验证openapi validatorswagger validatorapi 文档校验lint openapijson pointer接口文档检查paths$ref

同类工具