[Kotlin Spring Boot] YearMonth 로 데이터 전달 받기

정지현·2022년 7월 20일
0

간혹 클라이언트로부터 데이터를 전달 받을 때, 연-월-일 이 아닌 연-월 로만 데이터를 받아야 할 상황이 생길 수 있다.

이럴 때 YearMonth 객체를 사용하면 된다.

Request DTO 는 다음과 같이 생겼다.

data class ExampleSaveRequestDto(
    val yearMonth: YearMonth
)

컨트롤러는 매우 단순하게 구성했다. DTO 를 Request Body 로 전달받아 DTO 내의 yearMonth 프로퍼티를 출력한다.

@Slf4j
@RestController
@RequestMapping("/example")
class ExampleController(
    private val exampleService: ExampleService
) {

    @PostMapping("")
    fun createExample(@RequestBody requestDto: ExampleSaveRequestDto): ResponseEntity<ExampleResponseDto> {

		// DTO 의 프로퍼티 출력
        println("전달받은 값은 ${requestDto.yearMonth} 입니다.")

        return ResponseEntity(null, HttpStatus.OK)
    }

}

바로 테스트해본다.

아주 잘 나온다.

번외이지만, 만일 요청 시 2022-07 과 같은 데이터가 아니라 2022/07 처럼 포매팅을 다르게 해서 전달받고 싶다면 다음과 같이 @JsonFormat() 어노테이션을 적용해주면 된다.

data class ExampleSaveRequestDto(
    @JsonFormat(pattern = "yyyy/MM")
    val yearMonth: YearMonth
)

이렇게 해주면 Jackson 이 DTO 에 잘 역직렬화를 수행해준다.

잘 된다.

끗.

profile
나를 성장시키는 좌절에 감사하고 즐기려고 노력 중

0개의 댓글