在 Java 中隐藏 swagger UI 中不重要的 getter 方法

Hiding unimportant getter methods from swagger UI in Java

我的 class startDateLocalDateTimeendDate 有两个字段。在内部,这些需要作为 Optional<ZonedDateTime> 返回,而在查询中它们作为 LocalDateTimes.

提供
@ApiModel
public class SearchQuery {

    private static final ZoneId UTC_TIMEZONE = ZoneId.of("UTC");

    @ApiParam(value = "Start date and time of the requested time frame.", example = "2019-06-01T12:30", defaultValue = "0000-01-01T00:00")
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    private LocalDateTime startDate;

    @ApiParam(value = "End date and time of the requested time frame.", example = "2019-06-30T23:59", defaultValue = "9999-12-31T23:59")
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    private LocalDateTime endDate;

    public LocalDateTime getStartDate() {
        return this.startDate;
    }

    public LocalDateTime getEndDate() {
        return this.endDate;
    }

    public Optional<ZonedDateTime> getStartDateWithTimezone() {
        return Optional.ofNullable(startDate)
            .map(date -> date.atZone(UTC_TIMEZONE));
    }

    public Optional<ZonedDateTime> getEndDateWithTimezone() {
        return Optional.ofNullable(endDate)
            .map(date -> date.atZone(UTC_TIMEZONE));
    }
}

Swagger (Springfox v2.9.2) 现在显示所需的字段,但也显示 endDateWithTimezone.presentstartDateWithTimezone.present,当然它们都不需要作为参数:

一段时间以来,我一直在努力寻找从我的 swagger 文档中隐藏这些内容的方法。我该怎么做?

我认为这可能是重复的?:

Ronny Shibley 回答:

对于参数

public void getApi(@ApiIgnore String param){}

@ApiModelProperty(hidden="true")
public String paramInsideClass

最后解决的办法很简单。

您必须直接在要隐藏的 getter 上使用注释 @ApiModelProperty(hidden = true)