본문 바로가기
BackEnd/java spring

@RequestParam이 매핑된 파라미터를 전달하는 여러 케이스

by kkkdh 2024. 11. 18.
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이 됩니다.

 


참고한 글들

  1. https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/requestparam.html
  2. https://dev.to/daasrattale/spring-boot-optional-request-params-51k3
  3. 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

댓글