쩨이엠 개발 블로그

[ Swagger ] @Schema LocalDateTime Format 본문

개발/Spring

[ Swagger ] @Schema LocalDateTime Format

쩨이엠 2022. 4. 6. 19:23
728x90
반응형

Swagger에 Description을 달던 중 ResquestBody안에 LocalDateTime이 있는 경우

@Schema의 example대로 나오지 않는 오류가 발생했다

 

해결방법

1. JsonFormat 어노테이션 추가

   
  @Schema(name = "CorrelationDto.ChartReq", description = "데이터 리스트")
  @Data
  class ChartReq {
      ...
      @Schema(description = "기간 시작일", example = "2021-11-30T00:00:00")
      @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
      private LocalDateTime shotRangeStart;
      @Schema(description = "기간 종료일", example = "2022-03-31T00:00:00")
      @JsonFormat(pattern = "yyyy-MM-ddTHH:mm:ss")
      private LocalDateTime shotRangeEnd;
      ...
    }

 

실패!

 

 

2. DateTimeFormat 추가


  @Schema(name = "CorrelationDto.ChartReq", description = "데이터 리스트")
  @Data
  class ChartReq {
      ...
      @Schema(description = "기간 시작일", example = "2021-11-30T00:00:00")
      @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
      private LocalDateTime shotRangeStart;
      @Schema(description = "기간 종료일", example = "2022-03-31T00:00:00")
      @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss")
      private LocalDateTime shotRangeEnd;
      ...
    }

 

실패

 

 

3. type=string 추가

 
  @Schema(name = "CorrelationDto.ChartReq", description = "데이터 리스트")
  @Data
  class ChartReq {
      ...
      @Schema(description = "기간 시작일", example = "2021-11-30T00:00:00", type = "string")
      private LocalDateTime shotRangeStart;
      @Schema(description = "기간 종료일", example = "2022-03-31T00:00:00", type = "string")
      private LocalDateTime shotRangeEnd;
      ...
    }

 

성공!

 

 

RequestBody에 있는 LocalDateTime의 경우 type을 String으로 주면 정상적으로 Swagger에 example이 표시된다.

Swagger 2.0부터는 type에 LocalDate가 사라지고 date, date-time이 추가되었다.

date는 날짜, date-time은 날짜 및 시간정보를 표현하지만, DateTimeFormat이나 JsonFormat을 무시한다.

type을 String으로 추가해야 설정한 example을 보여줄 수 있다

 

728x90
반응형
Comments