API 工具

OpenAPI Mock 数据生成按操作准备请求和响应示例

选择操作与消息体,优先采用规范示例,也可按 Schema 生成。

OpenAPI Mock 数据生成

OpenAPI 规范

生成结果

规范和载荷留在当前浏览器中,不发送 API 请求。

生成选项

单份 JSON 保留消息体原形,多份增加外层数组。JSONL 每行一个消息体。

正在读取操作目录…

接口还没上线,前端已经需要测试成功、失败和空结果。OpenAPI Mock 数据生成让每份夹具对应到规范中的具体操作与状态码,避免把成功响应随手改成错误用例,却留下不符合契约的字段。

这里处理的是 OpenAPI 示例数据。一次生成的数量表示完整消息体的份数,不是响应数组中的元素数;后者仍由 Schema 的 items 和数量约束决定。

为什么使用 OpenAPI Mock 数据生成

错误响应也有自己的入口

OpenAPI Mock 数据生成不会只盯着默认成功码。可以选规范已经声明的 400、404 或 default,再选择该媒体类型下的命名示例。每次切换都重新锁定对应的契约,不会混用其他状态的载荷。

一个操作分支连到不同响应卡片,其中一个示例被选中。

把同一批数据交给同事

关掉示例优先后,用固定种子生成合成数据。保留规范、种子、数量与引擎版本,就能复现同一批结果。显式示例或常量本来就是固定值,不会为了显得随机而被偷偷改写。

两组相同种子分别生成顺序和颜色完全一致的消息体卡片。

先分清三种选择的含义

01

先确定消息体方向

初始 YAML 示例会自动解析出操作目录。请求方向只处理 requestBody,可生成请求体示例;响应方向再按状态码选择内容。路径、查询和请求头参数不属于这个消息体结果。

02

确认示例优先是否适合当前测试

媒体层的命名 examples 或 example 优先于 Schema 和属性示例。关闭开关才改为按约束采样。已有示例不合法时会报错,不会偷偷换成随机值掩盖规范问题。

03

看清单份与批量的包装

数量为 1 时,JSON 保留消息体原形;多份时增加外层批次数组,JSONL 每行一个完整载荷。支持 Ctrl/Cmd + Enter 手动生成,改动输入或选项后需重跑才能导出。

围绕具体接口场景生成夹具

操作与状态码逐项选择

按方法和路径定位操作,响应可选择已声明的具体状态、状态范围与 default。默认先找 200,再找其他 2xx,最后使用首项。生成 Mock 数据时,错误用例和正常用例有同样明确的入口。

示例也经过约束校验

支持内联值、命名示例和同文档 Example Object 引用,也会采用适用的 Schema 与属性示例。输出前校验每份载荷,而不因为它写在 examples 里就默认可信。

请求与响应字段分开

生成请求时排除 readOnly 属性,生成响应数据时排除 writeOnly 属性,同时调整对应方向的 required。用户提供的示例若含被排除的字段会失败,不会静默删字段后导出。

种子控制批次

数量可以设置为 1–100,每份结果都是完整载荷。固定种子便于回归测试。uniqueItems 约束的是单份载荷中的数组,不保证批次里的所有记录互不重复。

支持范围与失败边界

只处理支持版本的 JSON 消息体
接受单文档 OpenAPI 3.0.x、3.1.x 的 JSON 或 YAML;不接受 Swagger 2 与 OpenAPI 3.2。消息体媒体限 application/json 和 application/*+json,不生成 XML、表单、二进制、回调或 Webhook 工作流。
约束不支持就停止
支持 type、enum/const、对象属性、required、additionalProperties、items、uniqueItems,以及数值和长度边界。会转换 3.0 的 nullable 与排他边界。组合、条件、pattern、format、multipleOf、元组和未知校验关键字均拒绝,即使存在 examples 也不绕过。
引用只在当前文档内解析
支持本地 JSON Pointer 指向的 Schema 与示例。不读取外部 URL、externalValue,也不展开循环、锚点、资源 ID 或动态引用。3.1 的引用旁若另有校验约束会明确拒绝,不用简单合并削弱语义。
没有消息体就不伪造数据
没有 content 的响应显示无消息体,无法下载一个冒充响应的 null。JSON 媒体若缺 Schema 会报错。default 只是注释,不充当示例;不会按字段名猜姓名邮箱,也不会执行扩展脚本。
生成有明确预算
输入最多 500000 字符;展开后的生成 Schema 最多 100000 字符、2000 个语法节点、12 层,层数包含包装容器。字符串最多 1000 单元,集合最多 100 项,输出最多 1000000 字符,工作线程最多运行 5 秒。种子为 0–4294967295 整数;重复键、精度损失和 YAML 别名会拒绝。
不提供在线 Mock 服务
没有可调用的接口地址、HTTP 监听、鉴权、持久化增删改查或 MSW/Express 代码。结果是数据文件,不等于真实接口契约测试。超出预算或找不到样本,不代表数学上不存在符合该 Schema 的数据。

OpenAPI Mock 数据生成常见问题

怎样根据 OpenAPI 定义生成 JSON 示例?

粘贴完整规范并选择操作、方向和媒体类型。想复用文档示例就保留优先开关;想探索约束允许的值就关闭它。只有独立 Schema 时,可以使用站内的 Schema 数据生成工具。

怎样指定某个响应示例?

先选响应状态和 JSON 媒体类型,再选该位置的命名 example。接受内联值和同文档示例引用,媒体层优先于 Schema 层;其他状态码的示例不会参与本次生成。

能生成错误响应吗?

可以,但规范必须声明对应响应,并提供受支持的 JSON Schema。选 400 或 404 后得到相应消息体夹具;工具不会实际发送带该状态码的 HTTP 响应。

为什么每次生成的结果相同?

默认种子是 42,相同规范与选项会复现采样。显式 example、const 和单值 enum 本来就可能固定。先关闭示例优先,再改变种子,才能观察随机采样带来的差别。

生成的 Mock 会验证真实请求吗?

不会。这里校验的是提供或生成的消息体与支持的有效 Schema,不连接接口,不运行中间件,也不检验实际请求的鉴权、请求头和业务规则。

有希望支持的约束?

为下一条测试准备数据

先用 OpenAPI Mock 数据生成得到一份载荷,核对状态和来源,再按测试需要增加数量,保存可复现的夹具。