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
'BackEnd > java spring' 카테고리의 다른 글
@DateTimeFormat annotation에 대한 정리 (0) | 2024.11.14 |
---|---|
[Spring MVC] 기본 기능 (1) | 2023.05.20 |
[Spring MVC] 구조 이해 (0) | 2023.05.15 |
[Spring MVC] MVC 프레임워크 만들기 (0) | 2023.05.06 |
[Spring MVC] MVC 패턴에 대해서 (0) | 2023.03.20 |
댓글