Spring - @RequestParam

박민수·2023년 11월 14일

Spring

목록 보기
10/46
post-thumbnail

@RequestParam

스프링은 @RequestParam을 통해 HTTP 요청 파라미터를 받을 수 있다.
@RequestParam("username") 은 request.getParameter("username") 와 거의 같은 코드라 생각하면 된다.

특징

타입 변환

@RequestParam은 이를 처리하는 ArgumentResolver인 RequestParamMethodArgumentResolver에서 ConversionService를 사용해서 타입을 변환한다.

name(value) 속성

@RequestParam의 name(value) 속성이 파라미터 이름으로 사용된다.

@RequestParam("username") String memberName // 아래 코드와 동일
request.getParameter("username")

생략 가능

HTTP 파라미터 이름이 변수 이름과 같으면 @RequestParam(name="xx") 생략 가능

@ResponseBody
@RequestMapping("/request-param")
public String requestParam(@RequestParam String username, @RequestParam int age) {
    log.info("username={}, age={}", username, age);
    return "ok";
}

단순 타입 생략 가능

String, int, Integer 등의 단순 타입이면 @RequestParam도 생략 가능

@ResponseBody
@RequestMapping("/request-param")
public String requestParam(String username, int age) {
    log.info("username={}, age={}", username, age);
    return "ok";
}

추가 내용

필수 파라미터

@RequestParam의 required 속성을 사용하여 파라미터의 필수 여부를 설정할 수 있다. 기본값은 true이며, 해당 파라미터가 없으면 예외가 발생한다.

@ResponseBody
@RequestMapping("/request-param-required")
public String requestParamRequired(@RequestParam(required = true) String username, @RequestParam(required = false) Integer age) {
    log.info("username={}, age={}", username, age);
    return "ok";
}

기본값 설정

@RequestParam의 defaultValue 속성을 사용하여 파라미터의 기본값을 설정할 수 있다. 파라미터가 없거나 빈 문자열인 경우 기본값이 사용된다.

@ResponseBody
@RequestMapping("/request-param-default")
public String requestParamDefault(@RequestParam(defaultValue = "guest") String username, @RequestParam(defaultValue = "0") int age) {
    log.info("username={}, age={}", username, age);
    return "ok";
}

맵으로 받기

여러 개의 파라미터를 맵(Map)으로 받을 수도 있다.

@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(@RequestParam Map<String, String> paramMap) {
    log.info("username={}, age={}", paramMap.get("username"), paramMap.get("age"));
    return "ok";
}
profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글