Swagger UI - 可为空值

问题描述 投票:0回答:2

我们有一个 SpringBoot(1.5.12 版)REST Api,带有 springfox-swagger2 和 springfox-swagger-ui(2.9.2 版)

Swagger UI 中是否可以有可为 null 的属性(使用 swagger.yaml 配置文件或 swagger 注释)?

我们需要发送的有效负载是这样的:

{ 
  id: 2
  name: 'test'
  surname: null
}

Surname
应该是字符串或 null(默认为 null)。
如果不可能,我们可以重写一些 swagger 类来获得这种行为吗?

谢谢

java spring-boot swagger
2个回答
1
投票

是的,可以有可为空/可选的属性。为此,请将

required
(
@ApiModelProperty
) 注释中的
io.swagger.annotations
属性设置为 false(默认情况下实际上为 false)。

@ApiModelProperty(required = false, value = "Surname")
private String surname;

0
投票

我目前正在调查类似的问题,并偶然发现了一个可能的解释/解决方案,称“必需”和“可为空”是 OpenAPI 规范中的不同概念。属性“surname”被声明为可选(required:false)并不意味着它可以为空,它只是允许它完全被省略。为了能够包含它但具有 null 值,您可以将其设置为“nullable: true”(即使在这种情况下,它仍然可以设置为“required: true”,这意味着即使它为 null,也必须包含它) .

不过还没有测试过。我也不知道 Swagger UI 是否会正确处理此架构,实际上在适用时将属性发出为 null。

© www.soinside.com 2019 - 2024. All rights reserved.