首页 文章

node.js上swagger中的可空字段

提问于
浏览
9

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

这很简洁,但是我要求某些字段我想明确地返回或接受 null 作为值,例如:

{ 
  id: 123,
  description: "string",
  date_sent: null
}

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

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

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

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

3 回答

  • 12

    SwaggerUI不支持可空类型(请参阅here) . 但是我使用了可以为空的属性:

    type: ['string','null']
    

    之后,此属性从UI中消失,但验证仍然有效 .

  • 11

    OpenAPI(fka Swagger)规范v3.0.0支持 nullable 字段,但不支持v2.0 . 可空类型定义如下:

    # Can be string or null
    type: string
    nullable: true
    
  • 3

    您可以使用默认属性,而不是在type属性中添加null .

    Swagger.json属性定义示例:

    "due_date": {
      "type": "string",
      "description": "Due date",
      "default": "null"
    },
    

    它是一个有效的Swagger类型定义,并且仍然在Swagger UI中按预期显示 .

相关问题