Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Swagger/OpenAPI扩展JSON元数据_Json_Validation_Metadata_Swagger_Openapi - Fatal编程技术网

使用Swagger/OpenAPI扩展JSON元数据

使用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中使用的JSON对象声明扩展元数据的方法,该API是使用Swagger/OpenAPI指定的(如果有另一种格式支持所请求的特性,也可以使用类似的格式)

其思想是使用此元数据自动/部分生成用于编辑此数据的用户界面

所需功能的列表:

  • 多语言支持用户可读的信息,如名称, 说明、占位符、示例–项目的名称和说明 API规范本身可能不同于 例如,CRUD编辑器应该看到

  • 验证元数据
    我知道在Swagger/OpenAPI中有很多字段,比如minimum、maximum、pattern等等,但是没有办法为验证指定特定的(多语言)错误消息(比如“用户名必须由字母组成” “仅限数字”和翻译成多种语言)。或 要匹配的多个模式(每个模式都有错误消息) )

    另一种验证方法可能是API调用本身(如 检查电子邮件或用户名是否可用)

  • 的关系元数据 ID字段实际引用另一个ID的示例 对象(具有自己的元数据)

OpenAPI(fka.Swagger)规范可以通过使用
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-
属性的说明,并不打算解决问题中列出的所有用例