Swagger-ui不会从示例正文中隐藏readOnly嵌套对象

时间:2018-11-24 01:13:05

标签: java swagger-ui swagger-2.0

我正在使用swagger-ui和lombok开发spring-boot应用程序。目前,我正在尝试从请求主体中隐藏嵌套对象,但仍在swagger-ui页面上的示例json中显示。

我的课堂上带有注释(简化为仅相关内容):

@Data
@ApiModel(description = "Character model")
public class Character {

    @ApiModelProperty(readOnly = true)
    private Long id;

    @ApiModelProperty(readOnly = true)
    private SearchAnnouncement searchAnnouncement;
}

注意:@Data是Lombok批注,它会生成getter,setter和其他一些东西

当我在摇摇欲坠的页面上访问示例模型时,“ id”字段已正确隐藏在示例json中,并且在响应模型中可见。 但是“ searchAnnouncement”并没有隐藏在示例json中。

我试过了:
  • 使用readOnly = true
  • 使用accessMode = ApiModelProperty.AccessMode.READ_ONLY
  • 使用@Setter(AccessLevel.NONE),它阻止了该字段的setter的生成,因为我在某处读到某处正在检查setter是否存在并根据该值设置readOnly
  • 以上的不同组合

但是在所有情况下,示例json都看起来像这样(id隐藏,并且searchAnnouncement可见):

{
    "searchAnnouncement": {
         "id": 0,
    },
}

所以简而言之,我的问题是:

是否可以从示例json嵌套对象中隐藏?

编辑: 忘了提一下,我目前在依赖项中拥有2.9.2版的swagger2和swagger-ui,但我从2.8.0升级到了希望隐藏此嵌套对象的地方

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我通过在设置器上设置jsonIgnore来解决此问题。我正在使用依赖版本2.9.2。

答案 1 :(得分:0)

使用swagger3

@JsonReadOnly
@Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY)
private Long id;