在 Java 中隐藏 swagger UI 中不重要的 getter 方法
Hiding unimportant getter methods from swagger UI in Java
我的 class startDate
和 LocalDateTime
的 endDate
有两个字段。在内部,这些需要作为 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.present
和 startDateWithTimezone.present
,当然它们都不需要作为参数:
一段时间以来,我一直在努力寻找从我的 swagger 文档中隐藏这些内容的方法。我该怎么做?
我认为这可能是重复的?:
Ronny Shibley 回答:
对于参数
public void getApi(@ApiIgnore String param){}
@ApiModelProperty(hidden="true")
public String paramInsideClass
最后解决的办法很简单。
您必须直接在要隐藏的 getter 上使用注释 @ApiModelProperty(hidden = true)
。
我的 class startDate
和 LocalDateTime
的 endDate
有两个字段。在内部,这些需要作为 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.present
和 startDateWithTimezone.present
,当然它们都不需要作为参数:
一段时间以来,我一直在努力寻找从我的 swagger 文档中隐藏这些内容的方法。我该怎么做?
我认为这可能是重复的?:
Ronny Shibley 回答:
对于参数
public void getApi(@ApiIgnore String param){}
@ApiModelProperty(hidden="true")
public String paramInsideClass
最后解决的办法很简单。
您必须直接在要隐藏的 getter 上使用注释 @ApiModelProperty(hidden = true)
。