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

问题描述 投票:1回答:2

我们使用Swagger 2.x和SpringFox 2.0来记录使用Spring MVC创建的REST服务。

我们有一个REST响应,其属性为List <LocalDate>日期。

在响应的模型模式中,日期标签显示为“LocalDate”。这不是故意的:我们想要'date'或'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设为'date'或'yyyy-MM-dd'。这样做的方法似乎是使用com.wordnik.swagger.annotations.ApiModelProperty但这没有任何效果(它被拾取,因为当我添加@ApiModelProperty(hidden = true)时它被隐藏)。

我创建了一个显示问题的sample rest project

任何想法如何在Swagger模型架构中将LocalDate更改为'date'或'yyyy-MM-dd'?

rest spring-mvc swagger swagger-ui springfox
2个回答
0
投票

Docket对象中有一个方法可以替换名为directModelSubstitute()的模型。您可以像这样使用它来将LocalDate替换为Date对象:

Docket#directModelSubstitute(LocalDate.class, Date.class)

我找到的唯一问题是你不能改变日期格式。

请参阅A/Q section in the official Springfox documentation,特别是问题“我们如何使用Java 8类型esply。LocalDateTime?”


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

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

© www.soinside.com 2019 - 2024. All rights reserved.