프론트 측에서 swagger 문서의 request Body에 required 옵션을 추가해달라는 요청이 들어왔다.
현재는 request에 required 표시인 레드닷(red dot)이 하나도 적용되지 않는 상황이다.
심지어 swagger는 Java와 Kotlin에서 서로 약간 다르게 동작하기도 한다.
어떻게 해야 할까?
@ApiParam? @Parameter?
Swagger 3.0 버전 이후부터는 @ApiParam이 @Parameter로 변경됐다.
import io.swagger.v3.oas.annotations.Parameter
실제로 Java에서는 해당 어노테이션을 적용하면 잘 뜰것이다.
하지만 코틀린은? @Parameter(required=true)로 해봤자 전혀 변함이 없다.
심지어 @field:Parameter(required=true)와 같이 코틀린 꼴로 바꿔서 해도 변함이 없다.
어떻게 해야 할까?
정답은 바로 의존성 추가
kotlin에선 Java와 다르게 nullable 연산자들이 존재하기 때문에 별도의 의존성을 추가해주어야 한다.
아래 의존성을 추가해주기만 하면 된다.
implementation 'org.springdoc:springdoc-openapi-kotlin:1.6.9'
버전은 조금씩 차이가 날 수 있는데, org.springdoc:springdoc-openapi-ui:1.6.14 와 충돌이 나지 않는 버전으로 적용했다.
DTO 필드에 별다른 코드를 작성하지 않아도 된다.
실행해보면 DTO의 nullable 에 따라 swagger 문서에 required 표시가 적용된 것을 확인할 수 있다~
여담
추가로 나는 swagger 돌릴 때 보통 api operation 쪽만 봤었고, 모든 사람들이 그런 줄 알았다.
그런데 프론트분들이랑 대화해보니까 프론트분들은 아래쪽에 request, response를 더 자주 보나보다. (아니면 나를 위해 배려해준걸수도..)
신기하구만
'Kotlin > Kotlin | Spring 학습기록' 카테고리의 다른 글
[Kotlin] Refresh Token을 Redis에 저장하는 코드 작성 및 고찰 (0) | 2023.03.08 |
---|---|
[Spring] ArgumentResolver 사용 시 주의점 (feat. OSIV) (3) | 2023.02.26 |
[Kotlin] kotlin은 왜 Java와 달리 Checked Exception을 제공하지 않을까? (4) | 2022.11.15 |
[Kotest] Nested Test spec에서의 context 생명주기 및 트랜잭션 (11) | 2022.09.08 |
[Kotest] Kotest Spec으로 다양한 테스트 코드 스타일을 작성해보자 (0) | 2022.08.13 |