[Swagger] object 타입으로 테스트하기 - YearMonth 타입 샘플

by 스뎅(thDeng) on

Swagger UI에서 Try it now 버튼을 통해서 API를 테스트할 수 있다. DateTime과 같이 일반적으로 많이 사용하는 클래스는 자동으로 인지하여 string과 같은 타입으로 변환해 준다.

Image

하지만, 모든 클래스를 지원하기는 어려워서인지 YearMonth 클래스는 object로 인식해 버린다. 그리고 Execute 버튼을 누르면 잘못된 입력이라고 빨갛게 표시된다.

Image

이럴 때는 아래처럼 schema를 사용해서 어떤 타입으로 해석하면 될지 지정해 주면 된다. 물론 어플리케이션 서버에서는 String 으로 들어오는 파라미터를 YearMonth 클래스로 변환하는 mapper 설정은 별도로 필요하다.

@GetMapping("/{shopNumber}")
@Operation(summary = "조회조회!!")
fun fetchMyStatus(
    @Parameter(description = "가게 번호", example = "138277") @PathVariable("shopNumber") shopNumber: Long,
    @Parameter(description = "조회할 년월", example = "2022-08", schema = Schema(type = "string", format = "YearMonth")) @RequestParam("yearMonth")yearMonth: YearMonth,
): List<MyStatusApiResponse> =
    myService.fetchMyStatus(
        yearMonth = yearMonth,
        shopNumber = shopNumber,
    ).let(MyStatusApiResponse.Companion::from)

schema가 들어가면서 솔직히 라인은 너무 길어지지만, 포메팅 잘 해두자.

Image

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License