[Spring boot] @RequestParam으로 QueryParameter를 받는 3가지 방법

김우진·2021년 11월 7일
0

Map으로 감싸는 방법

@GetMapping("/map-param")
public String mapParam(@RequestParam Map<String, String> queryParam) {
	 queryParam.entrySet().forEach( entry -> {
    		System.out.println(entry.getKey());
        	System.out.println(entry.getValue());
   	}  
}

Map을 통해서 파라미터를 한 번에 전달받으면 편하기는 하지만, 명확하게 어떤 파라미터를 전달 받는 지 모르는 단점이 있다.

Query Parameter로 무엇이 들어 올지 모를 경우 추천!

하나씩 받아오기

@GetMapping("/each-param")
public String eachParam(@RequestParam String name, int age) {
	 System.out.println(name);
     System.out.println(age);
}

이렇게 하나하나 받아오는 방법을 사용하면 무엇을 받아오는 지 볼 수 있지만, 로직이 바꾸면 코드 변경 사항이 많고, age param에 String 혹은 다른 자료형이 들어오면 바로 error를 발생한다.

Query Parameter로 받을 것이 명확하고 적으며 변하지 않을 경우 추천!

Dto 사용

@GetMapping("/dto-param")
public String dtoParam(RequestDto requestDto) {
	 System.out.println(requestDto.getName());
     System.out.println(requestDto.getAge());
}

Map 방식의 한 번에 전달 받으면 좋은 장점과 하나씩 받아오는 방식의 무엇이 들어올 지 알 수 있는 장점을 둘 다 가진 방식이다.

주의 해야 할 점은 dto 사용 시 @RequestParam은 필수가 아니다. 이는 Spring이 QueryParam의 매개변수로 객체가 오게 되면 이 객체와 Query Parameter를 비교해 매칭되면 자동으로 연결해주기 때문이다.

가장 일반적으로 추천(예외 처리 등에서도 유리)!

0개의 댓글