Spring - @RequestParam 값 전달시 '?'

민찬홍·2023년 11월 24일
0

Spring

목록 보기
3/16
post-thumbnail

☕️code1

@GetMapping("/calc4")
    @ResponseBody
    String showCalc4(
            @RequestParam(defaultValue = "0") double a,
            @RequestParam(defaultValue = "0") double b
    ) {
        return "계산 결과 : %f".formatted(a + b);
    }

다음과 같은 코드가 있다고 하자. intellij로 이 코드를 실행한 다음에 결과가 제대로 반영되었는지 확인하려면 http:localhost:8020 처음 지정해놓은 port number를 통해 확인해야 한다. 이때 매개변수 a와 b에 값을 전달하기 위해서는 url의 port뒤에 ?를 붙여줘야한다. 이유가 뭘까


결과

Spring에서 @RequestParam 어노테이션을 사용하여 매개변수를 처리하면, 해당 매개변수가 요청 파라미터로 전달되었는지를 나타내기 위해 ? 와 함께 사용된다. URL의 query string 부분은 ? 로 시작하며, 그 뒤에는 key = value 형식이다.

예를 들어, http://localhost:8020?param1=value1&param2=value2와 같은 URL에서 ? 이후의 부분은 query string이며, param1과 param2는 요청 파라미터의 이름이고, 각각에 해당하는 값은 value1과 value2이다.

따라서, http://localhost:8020?를 통해 query string을 시작하는 것은 이 컨트롤러 메서드가 요청 파라미터를 처리한다는 것을 나타내기 위함이다.

하지만 명심해야 될 부분은 @RequestParam 어노테이션은 요청 파라미터를 명시적으로 처리하기 위한 것이며, 필수가 아니다. Spring은 메서드 매개변수에 대한 요청 파라미터를 자동 매핑해주는데, 이를 통해 명시적 어노테이션 없이도 요청 파라미터를 사용할 수 있다.

@GetMapping("/calc7")
@ResponseBody
boolean showCalc7(int a, int b) {
    return a > b;
}

위 코드도 요청 파라미터를 제대로 넣어준다면 정상작동한다. 하지만 이 경우에는 요청 파라미터가 반드시 존재해야 한다. 만약 요청 파라미터가 없는 경우 400 Bad Request 오류가 발생할 수 있다. 필요에 따라 @RequestParam을 사용하여 요청 파라미터의 기본값을 지정하거나, 필수 여부를 설정할 수 있다.

profile
백엔드 개발자를 꿈꿉니다

0개의 댓글

관련 채용 정보