相关疑难解决方法(0)

如何将属性指定为null或引用?

我有一个json文档,其中一个部分可以是null或子对象,如下所示:

[{
    "owner":null    
},
{
    "owner":{
        "id":1
    }   
}]
Run Code Online (Sandbox Code Playgroud)

问题是,是否可以使用ref在json模式草案v4中对此进行建模?

我想要的是这样的

{
    "type":"object",
    "properties":{
        "owner":{
            "type":["null", "object"],
            "$ref":"#/definitions/id"
        }
    },
    "definitions":{
        "id":{
            "type":"object",
            "properties":{
                "id":{
                    "type":"number"
                }
            }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

jsonschema

23
推荐指数
1
解决办法
1万
查看次数

node.js上swagger中的可空字段

我花了很多时间试图找到在Node.JS中创建swagger文档的解决方案.主库是swagger-node,在其中创建一个swagger yaml文件,然后将控制器添加到它.它会自动在您的应用中提供swagger ui文档,并根据您在yaml中指定的模型对请求和响应进行验证.

这很整洁,但是我要求我希望明确能够返回或接受某些字段null作为值,例如:

{ 
  id: 123,
  description: "string",
  date_sent: null
}
Run Code Online (Sandbox Code Playgroud)

我不想删除date_sent密钥,我想明确地将其声明为null.

swagger规范不支持anyOfJSON模式通常如何做到这一点我相信.

我想知道是否有解决方法?也许某些库可用于具有x-nullable可以添加的供应商特定标志的节点,或者某种方式指定我的非必需字段应该都可以为空.

我是否必须自己写一些带有我的swagger文件的东西,然后在验证器中间件运行之前修改它,或者是否有某些可以建议的解决方法?

node.js swagger swagger-ui swagger-editor

14
推荐指数
3
解决办法
1万
查看次数

OpenAPI中"必需"的含义是什么意思

给定以下OpenAPI定义以下哪些对象是有效的.只是1.或1.和2.?

Person:
  required:
    - id
  type: object
  properties:
    id:
      type: string
Run Code Online (Sandbox Code Playgroud)
  1. {"id": ""}
  2. {"id": null}
  3. {}

这归结为"required = true"是否意味着"非空 "或" 属性必须存在"的问题.

https://json-schema-validator.herokuapp.com/上的JSON模式验证器表示2.无效,因为null不满足type: string约束.请注意,它不会抱怨,因为它id是null,但因为null它不是一个字符串.但是这对于OpenAPI/Swagger有多重要?

swagger openapi

7
推荐指数
1
解决办法
3037
查看次数

如何指定属性可以为null或带有swagger的引用

如何将属性指定为null或引用?讨论如何使用jsonschema将属性指定为null或引用.

我希望以昂首阔步的方式做同样的事情.

回顾上面的答案,使用jsonschema,可以这样做:

{
   "definitions": {
      "Foo": {
         # some complex object
      }
   },

   "type": "object",
   "properties": {
      "foo": {
         "oneOf": [
            {"$ref": "#/definitions/Foo"},
            {"type": "null"}
         ]
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

答案的关键是使用oneOf.

我的问题的关键点:

  1. 我有一个复杂的对象,我想保持DRY,所以我把它放在一个定义部分,以便在我的swagger规范中重用:其他属性的值; 响应对象等

  2. 在我的规范中的各个地方,属性可能是对此类对象的引用或为null.

如何使用不支持的Swagger oneOfanyOf

注意:一些swagger实现使用x-nullable(或某些)指定属性值可以为null,但是,$ref 它引用的内容替换该对象,因此它将显示任何使用x-nullable被忽略.

swagger swagger-2.0

6
推荐指数
3
解决办法
7505
查看次数

AWS API 网关:文档 Swagger 导出模型类型 null 被忽略

我在将 AWS 的 API 网关文档导出到 Swagger 时遇到问题。我有一个包含空类型的 JSON 模式模型的文档部分,例如:

{
  "title": "Incident",
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
        "type": "string"
    },
    "createdAt": {
        "type": "string"
    },
    "updatedAt": {
        "type": ["string", "null"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它适用于验证,它允许我为 updatedAt 字段发送空值。但是,在这种情况下,当我将文档导出到 Swagger 时,我只有这是我的 swagger 文件:

{
  "title": "Incident",
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
        "type": "string"
    },
    "createdAt": {
        "type": "string"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 updatedAt 字段被简单地忽略了,如果我设置了,我也会遇到同样的问题

"type": "null"
Run Code Online (Sandbox Code Playgroud)

这确实有问题,因为我需要能够发送空值,在这种情况下,我的 swagger 文档缺少模型中的某些字段。

有什么方法可以在 JSON Schema 中定义一个不会被 …

jsonschema amazon-web-services swagger aws-api-gateway

6
推荐指数
1
解决办法
1403
查看次数

如何在与 AWS API Gateway 兼容的 OpenAPI 3.0.x 中声明可为 null 的属性

我们一直在使用 OpenAPI 3.0.x 规范,它添加了声明nullable属性的功能。

当我将此 OpenAPI 导入 AWS API Gateway 时,相应的模型不支持此可为空的设置。

有没有办法在 OpenAPI 3.0.x 中声明nullable属性,以便 AWS API 网关也使用此设置识别并配置底层模型?

OpenAPI 规范示例

openapi: "3.0.2"
info:
  title: Test
  description: |
    API
  version: "0.1.0"
  license:
    name: Private
    url: https://fillme.one/license
servers:
  - url: /api/v1
paths:
  /accounts:
    post:
      operationId: repa
      responses:
        200:
          description: test
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  format: date-time
                  nullable: true
              required:
                - date
Run Code Online (Sandbox Code Playgroud)

生成的模型的结果 JSON 模式文档

{
  "required" : [ "date" ],
  "type" : …
Run Code Online (Sandbox Code Playgroud)

jsonschema aws-api-gateway openapi

6
推荐指数
1
解决办法
5771
查看次数