BackEnd/java spring
@RequestParam이 매핑된 파라미터를 전달하는 여러 케이스
kkkdh
2024. 11. 18. 23:45
728x90
@RequestParam annotation을 이용해 GET 요청 시 url에 query parameter로 포함하여 값을 전달할 수 있습니다.
@GetMapping()
public String test(@RequestParam("test_query_param")String testQueryParam){
...
}
대강 이런 식으로 사용합니다.
문득, 저 test_query_param이라는 query parameter를 정의하지 않고, 전달하면 parameter 변수는 어떤 값을 참조할까 궁금했습니다. (특히, null 값을 언제 가지는지 궁금했습니다...)
@RequestParam의 설정에 따라 설정되는 값이 다른데요, 정리하면 다음과 같습니다.
1. default (required = true)
- 파라미터가 제공되지 않으면 400 Bad Request 오류가 발생합니다.
- 이 경우 메소드 내부 코드는 실행되지 않으므로, 변수는 null을 참조하지 않습니다.
2. required = false로 설정한 경우
- 파라미터가 제공되지 않으면 해당 변수는 null을 참조합니다.
- 예시) @RequestParam(required = false) String param
3. defaultValue 속성 사용하는 경우
- 파라미터가 제공되지 않으면 지정된 기본값이 사용됩니다.
- 예시) @RequestParam(defaultValue = "default") String param ➡️이 경우 param은 절대 null이 되지 않습니다.
4. Optional<T> type 사용하는 경우
- 파라미터가 제공되지 않으면 Optional.empty()가 반환됩니다.
- 예시) @RequestParam Optional<String> param
정리하면, @RequestParam annotation 사용 시, required = false로 설정한 뒤, default value를 따로 지정하지 않은 경우 null이 됩니다.
참고한 글들
- https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/requestparam.html
- https://dev.to/daasrattale/spring-boot-optional-request-params-51k3
- https://codingnomads.com/spring-requestparam-query-parameters
728x90