我们使用Swagger 2.x和SpringFox 2.0来记录使用Spring MVC创建的REST服务。
我们有一个REST响应,其属性列表< LocalDate>日期。
在回复的模型架构中,日期标签显示为' LocalDate'。这不是故意的:我们想要约会'或者&#y; yyyy-MM-dd'代替。
我们有这个课程:
public class SayHelloResponse {
private List<LocalDate> dates;
private String message;
public SayHelloResponse(String message, LocalDate... dates) {
this.message = message;
this.dates = ImmutableList.copyOf(dates);
}
public List<LocalDate> getDates() {
return dates;
}
public String getMessage() {
return message;
}
}
这导致了这个模型模式:
{
"dates": [
"LocalDate"
],
"message": "string"
}
在Model Schema中,我想将LocalDate作为&#39; date&#39;或者&#y; yyyy-MM-dd&#39;这样做的方法似乎是使用com.wordnik.swagger.annotations.ApiModelProperty但这没有任何效果(它被拾取,因为当我添加@ApiModelProperty(hidden = true)时它被隐藏)。
我创建了一个显示问题的sample rest project。
如何将LocalDate更改为&#39; date&#39;或者&#y; yyyy-MM-dd&#39;在Swagger的模型模式中?
答案 0 :(得分:0)
Docket对象中有一个方法可以替换名为directModelSubstitute()的模型。您可以像这样使用它来将LocalDate替换为Date对象:
Docket#directModelSubstitute(LocalDate.class, Date.class)
我发现它唯一的问题是你无法改变日期格式。
请参阅A/Q section in the official Springfox documentation,特别是问题&#34; 我们如何使用Java 8类型。 ?LocalDateTime 强>&#34;
答案 1 :(得分:0)
在Springfox官方文档中建议这样做,但不起作用:
Docket(DocumentationType.SWAGGER_2)..build().directModelSubstitute(LocalDate.class, java.sql.Date.class)
此效果但是将格式更改为日期时间而不是日期:
Docket(DocumentationType.SWAGGER_2)..build().directModelSubstitute(LocalDate.class, java.util.Date.class);
这就是为什么我使用最后一个而忽略时间部分的原因。