如何将java.time.instant与swagger 2.x结合使用?

hc2pp10m  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(400)

我在javawebapp中有一个rest端点,它接受一个瞬间作为查询参数,如下面的代码所示

@GET
@Produces(MediaType.APPLICATION_JSON)
Response getHistory(
    @QueryParam("beforeTime")
    Instant beforeTime,

    @QueryParam("afterTime")
    Instant afterTime) {
    ...
}

这在swagger1.x下运行得很好,但是当我们切换到swagger2.x时 Instant 作为一个 $int64 而不是日期时间字段。我可以用招摇过市的注解做些什么来让它工作呢?

hrysbysz

hrysbysz1#

我可以使用@apiparam注解来解决这个问题。将类型设置为 date-time 并格式化为 java.time.Instant 解决了这个问题。

@GET
@Produces(MediaType.APPLICATION_JSON)
Response getHistory(
    @QueryParam("beforeTime")
    @ApiParam(type="date-time", format = "java.time.Instant")
    Instant beforeTime,

    @QueryParam("afterTime")
    @ApiParam(type="date-time", format = "java.time.Instant")
    Instant afterTime) {
    ...
}

相关问题