개발
home
🪄

kotlin의 springdoc openapi에서 RequestBody의 변수를 optional 처리

Created
2022/07/12
Tags
SpringBoot
swagger
openapi
2022-07-12 @이영훈
Kotlin Spring Boot에서 springdoc openapi를 사용할 때, RequestBody의 변수를 optional 처리한 방법을 기록으로 남깁니다.
먼저 Java의 경우 처리하는 방법입니다. stackoverflow의 내용을 참고하였습니다.
다음과 같은 API에서 CreateMenuDTO의 특정 변수를 optional로 처리하려고 합니다.
@PostMapping("/v1/menus") public ResponseEntity<MessageDTO> createMenu( @org.springframework.web.bind.annotation.RequestBody // Spring @io.swagger.v3.oas.annotations.parameters.RequestBody // Swagger CreateMenuDTO createMenu ) { // logic return ResponseEntity.status(HttpStatus.CREATED) .body(new MessageDTO("Successfully created menu")) }
Java
복사
@Pararmter(required = false) 어노테이션으로 필수가 아님을 나타낼 수 있습니다
class CreateMenuDTO { @Parameter(required = true) String name; @Paramter(required = true) int price; @Paramter(required = false) // 🦊 여기가 핵심입니다 String description; }
Java
복사
kotlin의 경우는 Java와 동일한 방법으로 했을 때 정상적으로 되지 않았습니다.
구글링을 잘 못해서 그런지 정보를 못 찾아서 내가 구현했다면 어떻게 했을까 생각해서 구현되어 있을거 같은 방법을 찾았는데 의외로 쉽게 찾았습니다.
kotlin plugin을 설치하고
dependencies { implementation("org.springdoc:springdoc-openapi-kotlin:1.6.9") }
Kotlin
복사
optional한 부분을 nullable type으로 지정해주면 필드값을 optional로 변경할 수 있습니다.
class CreteMenuDTO( val name: String, val price: Int, val description: String? = null, // 🦊 여기가 핵심입니다 )
Kotlin
복사

Ref.