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

时间:2019-11-15 14:46:36

标签: java swagger swagger-ui springfox

我在startDate的班级endDateLocalDateTime中有两个字段。在内部,这些需要以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,它们当然都不需要作为参数:

enter image description here

我已经尝试了一段时间,以找到将这些隐藏在我昂扬的文档中的方法。我该怎么办?

2 个答案:

答案 0 :(得分:0)

我相信这可能是重复的吗?:https://stackoverflow.com/a/41677559/8932643

Ronny Shibley答案:

对于参数

public void getApi(@ApiIgnore String param){}

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

答案 1 :(得分:0)

最终的解决方案非常简单。

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