@RequestParam 에 기본값 넣어주기

김대니·2022년 8월 30일
0

Kotlin

목록 보기
1/3
post-thumbnail

Goal
Kotlin 에서 @RequestParam 을 사용할 때 기본값을 넣는 방법에 대해 알아봅니다.

@RequestParam
보통 GET Method 형태로 RESTful 한 API 를 만들 때 @RequestParam 어노테이션을 사용해서 parameter 를 주입받게 됩니다.

아래처럼 사용하는 것이 일반적이죠.

@GetMapping('/api/v1/order/{orderItemId}')
fun getOrdersByOrderItemIds(
	@PathVariable orderItemId: Long,
    @RequestParam page: Int,
    @RequestParam size: Int,
)

pagesize 에 대해서는 기본값을 설정하고 싶어서 처음에는 다음과 같이 시도했는데요.

@GetMapping('/api/v1/order/{orderItemId}')
fun getOrdersByOrderItemIds(
	@PathVariable orderItemId: Long,
    @RequestParam page: Int? = 1,
    @RequestParam size: Int? = 10,
)

실행해보니 기본값으로 설정한 1, 10 이 넘어오는게 아니라 null 이 넘어오더라구요.

검색을 해보니 원인은 해당 API 가 호출이 되면 ArgumentResolver를 거치게 되는데 이 때 pagesizenull 이 채워진채로 받기 때문에 기본값이 설정되지 않는다고 해요.(RequestParamMethodArgumentResolver)

따라서 이 때는 @RequestParam 어노테이션 자체의 설정을 활용하면 의도한대로 작동하게 됩니다.

@GetMapping('/api/v1/order/{orderItemId}')
fun getOrdersByOrderItemIds(
	@PathVariable orderItemId: Long,
    @RequestParam(defaultValue = "1") page: Int,
    @RequestParam(defaultValue = "10") size: Int,
)
profile
?=!, 물음표를 느낌표로

0개의 댓글