使用Swagger/OpenAPI扩展JSON元数据
我正在寻找一种为API中使用的JSON对象声明扩展元数据的方法,该API是使用Swagger/OpenAPI指定的(如果有另一种格式支持所请求的特性,也可以使用类似的格式) 其思想是使用此元数据自动/部分生成用于编辑此数据的用户界面 所需功能的列表:使用Swagger/OpenAPI扩展JSON元数据,json,validation,metadata,swagger,openapi,Json,Validation,Metadata,Swagger,Openapi,我正在寻找一种为API中使用的JSON对象声明扩展元数据的方法,该API是使用Swagger/OpenAPI指定的(如果有另一种格式支持所请求的特性,也可以使用类似的格式) 其思想是使用此元数据自动/部分生成用于编辑此数据的用户界面 所需功能的列表: 多语言支持用户可读的信息,如名称, 说明、占位符、示例–项目的名称和说明 API规范本身可能不同于 例如,CRUD编辑器应该看到 验证元数据 我知道在Swagger/OpenAPI中有很多字段,比如minimum、maximum、pattern等
- 多语言支持用户可读的信息,如名称, 说明、占位符、示例–项目的名称和说明 API规范本身可能不同于 例如,CRUD编辑器应该看到
- 验证元数据
我知道在Swagger/OpenAPI中有很多字段,比如minimum、maximum、pattern等等,但是没有办法为验证指定特定的(多语言)错误消息(比如“用户名必须由字母组成” “仅限数字”和翻译成多种语言)。或 要匹配的多个模式(每个模式都有错误消息) ) 另一种验证方法可能是API调用本身(如 检查电子邮件或用户名是否可用) - 的关系元数据 ID字段实际引用另一个ID的示例 对象(具有自己的元数据)
x-
属性进行扩展(请参见规范)。这些x-
属性被标准OpenAPI解析器忽略
您几乎可以在规范文件中的任何地方定义自己的属性,即使在JSON模式定义中也是如此,但是您必须编写自己的解析器来使用它们和/或修改工具,如Swagger UI(这相当容易),以便在此类工具中查看它们
下面是一个定义中包含一些x张力的示例:
swagger: "2.0"
info:
version: 1.0.0
title: X-tension example
description: Using x- properties to extend the OpenAPI specification
x-example: we can put x-tension almost anywhere in the specification
paths: {}
definitions:
User:
properties:
id:
type: string
name:
type: string
maxLength: 50
minLength: 10
x-validation:
multiLingualMessage:
en: Name's length must be between <minLength> and <maxLength>
fr: La longeur de Name doit être comprise entre <minLength> et <maxLength>
friends:
type: array
description: An array of UserId
items:
type: string
x-reference:
type: User
昂首阔步:“2.0”
信息:
版本:1.0.0
标题:X-张力示例
描述:使用x属性扩展OpenAPI规范
x-示例:我们几乎可以在规范中的任何地方设置x-张力
路径:{}
定义:
用户:
特性:
身份证件:
类型:字符串
姓名:
类型:字符串
最大长度:50
最小长度:10
x-验证:
多语言信息:
en:名称的长度必须介于和之间
fr:La Longuer de Name doitêtre entre et
朋友:
类型:数组
description:一个UserId数组
项目:
类型:字符串
x参考:
类型:用户
编辑器认为此OpenAPI规范有效:它忽略x-
属性
此示例仅是x-
属性的说明,并不打算解决问题中列出的所有用例