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

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

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

  1. @GET
  2. @Produces(MediaType.APPLICATION_JSON)
  3. Response getHistory(
  4. @QueryParam("beforeTime")
  5. Instant beforeTime,
  6. @QueryParam("afterTime")
  7. Instant afterTime) {
  8. ...
  9. }

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

hrysbysz

hrysbysz1#

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

  1. @GET
  2. @Produces(MediaType.APPLICATION_JSON)
  3. Response getHistory(
  4. @QueryParam("beforeTime")
  5. @ApiParam(type="date-time", format = "java.time.Instant")
  6. Instant beforeTime,
  7. @QueryParam("afterTime")
  8. @ApiParam(type="date-time", format = "java.time.Instant")
  9. Instant afterTime) {
  10. ...
  11. }

相关问题