我们有一个 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)。谢谢
是的,可以有可为空/可选的属性。为此,请将
required
(@ApiModelProperty
) 注释中的 io.swagger.annotations
属性设置为 false(默认情况下实际上为 false)。
@ApiModelProperty(required = false, value = "Surname")
private String surname;
我目前正在调查类似的问题,并偶然发现了一个可能的解释/解决方案,称“必需”和“可为空”是 OpenAPI 规范中的不同概念。属性“surname”被声明为可选(required:false)并不意味着它可以为空,它只是允许它完全被省略。为了能够包含它但具有 null 值,您可以将其设置为“nullable: true”(即使在这种情况下,它仍然可以设置为“required: true”,这意味着即使它为 null,也必须包含它) .
不过还没有测试过。我也不知道 Swagger UI 是否会正确处理此架构,实际上在适用时将属性发出为 null。