uhyvn 2023. 12. 5. 20:31

스프링에서는 웹 요청 파라미터를 메서드 파라미터로 전달받기 위해  @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&param2=value2 와 같이 요청을 보낼 수 있다.

 


 

 

HTTP 파라미터 이름이 변수 이름과 다를 때, value를 쓰는 방법

@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam(value = "param1") String parameter1,
                              @RequestParam(value = "param2") int parameter2) {
    // 메서드 내용
}

 

/endpoint?param1=value1&param2=value2 와 같이 요청을 보낼 수 있다.

param1의 값은 문자열 parameter1에 담기고, param2의 값은 정수 parameter2에 담긴다.

 


 

 

파라미터를 선택적으로 제공할 수 있게 쓰는 방법

@GetMapping("/endpoint")
public String exampleEndpoint(@RequestParam(required = true) String param1,
                              @RequestParam(required = false) Integer param2) {
    // 메서드 내용
}

 

/endpoint?param1=value1&param2=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&param2=value2 와 같이 요청을 보낼 수 있고,

클라이언트가 param1을 전달하지 않으면 문자열 parameter1에 담기는 기본값은 "default1"이 된다.

 

또한 클라이언트가 param2를 전달하지 않으면 정수 parameter2에 담기는 기본값은 42가 된다. 이 때 클라이언트가 문자열로 "42"를 전달해도 스프링이 자동으로 int로 변환해준다.