@RequestParam 사용법
스프링에서는 웹 요청 파라미터를 메서드 파라미터로 전달받기 위해 @RequestParam을 지원한다.
주로 HTTP GET 요청에서 쿼리 파라미터를 받을 때 사용된다.
기본 사용 방법
@RestController
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam String paramName) {
// paramName을 사용하여 뭔가를 수행
return "Received parameter: " + paramName;
}
}
/example/endpoint?paramName=value 와 같은 요청이 들어오면 paramName 에 해당하는 값이 메서드 내에서 사용된다.
여러 요청 파라미터를 받는 방법
@RestController
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam String param1, @RequestParam int param2) {
return "Received parameters: " + param1 + ", " + param2;
}
}
/example/endpoint?param1=value1¶m2=value2 와 같이 요청을 보낼 수 있다.
HTTP 파라미터 이름이 변수 이름과 다를 때, value를 쓰는 방법
@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam(value = "param1") String parameter1,
@RequestParam(value = "param2") int parameter2) {
// 메서드 내용
}
/endpoint?param1=value1¶m2=value2 와 같이 요청을 보낼 수 있다.
param1의 값은 문자열 parameter1에 담기고, param2의 값은 정수 parameter2에 담긴다.
파라미터를 선택적으로 제공할 수 있게 쓰는 방법
@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam(required = true) String param1,
@RequestParam(required = false) Integer param2) {
// 메서드 내용
}
/endpoint?param1=value1¶m2=value2 와 같이 요청을 보낼 수 있고,
/endpoint?param1=value1와 같이 요청을 보낼 수 있다.
기본적으로 required 는 true로 설정되어 있으니, 선택적으로 제공받고 싶다면 false로 지정해주면 된다.
클라이언트가 파라미터를 전달하지 않았을 때, 해당 파라미터가 누락되더라도 기본값을 사용하여 코드에서 추가적인 예외 처리를 할 필요가 없도록 하는 방법
@GetMapping("/endpoint")
public String exampleEndpoint(
@RequestParam(value = "param1", defaultValue = "default1") String parameter1,
@RequestParam(value = "param2", defaultValue = "42") int parameter2
) {
// 메서드 내용
}
/endpoint?param1=value1¶m2=value2 와 같이 요청을 보낼 수 있고,
클라이언트가 param1을 전달하지 않으면 문자열 parameter1에 담기는 기본값은 "default1"이 된다.
또한 클라이언트가 param2를 전달하지 않으면 정수 parameter2에 담기는 기본값은 42가 된다. 이 때 클라이언트가 문자열로 "42"를 전달해도 스프링이 자동으로 int로 변환해준다.