You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从OpenAPI YAML文件提取校验属性生成JSON用于前端UI校验

从OpenAPI YAML提取校验规则生成JSON的可行方案

方案1:复用现有openapi-generator流程,自定义输出模板

这个方案不需要新增额外工具,直接适配你已经在用的npx @openapitools/openapi-generator-cli工作流:

  • 新建自定义模板目录,比如命名为openapi-templates
  • 在目录内新增validationRules.mustache模板文件,示例内容如下,可根据你需要的JSON结构调整:
{
  {{#models}}
  "{{classname}}": {
    {{#vars}}
    "{{baseName}}": {
      {{#minimum}}"minimum": {{minimum}},{{/minimum}}
      {{#maximum}}"maximum": {{maximum}},{{/maximum}}
      {{#maxLength}}"maxLength": {{maxLength}},{{/maxLength}}
      {{#minLength}}"minLength": {{minLength}},{{/minLength}}
      {{#pattern}}"pattern": "{{pattern}}"{{/pattern}}
    }{{^-last}},{{/-last}}
    {{/vars}}
  }{{^-last}},{{/-last}}
  {{/models}}
}
  • 执行生成命令时新增-t参数指定模板目录即可:
npx @openapitools/openapi-generator-cli generate -i 你的openapi文件路径.yaml -g typescript-axios -o 代码输出目录 -t ./openapi-templates
  • 生成完成后,输出目录会同时包含原有TS接口、axios请求代码,以及你需要的校验规则JSON文件,两者完全同步。

方案2:写轻量Node.js脚本自主解析

如果不想修改生成器配置,也可以用几十行代码快速实现自定义提取,灵活度更高:

  • 先安装依赖:
npm install js-yaml fs-extra
  • 新建extract-validation.js脚本,示例逻辑如下:
const yaml = require('js-yaml')
const fs = require('fs-extra')

// 读取解析OpenAPI文件
const openapiContent = fs.readFileSync('你的openapi文件路径.yaml', 'utf8')
const openapiSchema = yaml.load(openapiContent)
const validationRules = {}

// 遍历所有模型提取校验属性
Object.entries(openapiSchema.components.schemas).forEach(([modelName, modelSchema]) => {
  validationRules[modelName] = {}
  Object.entries(modelSchema.properties).forEach(([propName, propSchema]) => {
    validationRules[modelName][propName] = {}
    ;['minimum', 'maximum', 'maxLength', 'minLength', 'pattern'].forEach(rule => {
      if (propSchema[rule] !== undefined) {
        validationRules[modelName][propName][rule] = propSchema[rule]
      }
    })
  })
})

// 输出为JSON文件
fs.writeJSONSync('./validation-rules.json', validationRules, { spaces: 2 })
  • 可以把脚本执行命令和openapi-generator的生成命令串行配置在package.json的scripts里,保证每次生成接口时自动同步更新校验规则。

方案3:使用专门的Schema转换工具

如果你的前端项目用了Zod、Yup、AsyncValidator这类常用校验库,可以直接找对应的OpenAPI Schema转对应校验规则的开源包,不需要自己写解析和映射逻辑,一步生成可以直接用的校验配置。

内容的提问来源于stack exchange,提问作者druveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 10:03:03