Swagger Model Schema Response:SpringFox中LocalDate的备用标签

时间:2015-04-28 13:34:54

标签: rest spring-mvc swagger swagger-ui springfox

我们使用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的模型模式中?

2 个答案:

答案 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);

这就是为什么我使用最后一个而忽略时间部分的原因。