본문 바로가기
Java

spring에서 파라미터를 받는 방법

by 완기 2021. 2. 18.
728x90
반응형

spring을 사용하다보면 클라이언트에서 넘어오는 파라미터를 받아야한다.

 

받는 방법에는 다양한 방법이 있지만. 두 가지 방법을 소개하고 해당 방법의 차이를 소개한다.

 

@PostMapping("/getparameter")
@ResponseBody
public Map<String,Object> getParam(@RequestParam(name="age",required=false)int age,
			@RequestParam(name="name")String name){
	Map<String,Object> map =new HashMap<>();
    map.put("age",age);
    map.put("name",name);
	return map;
}

가장 일반적으로 쓰는 방법인 @RequestParam 어노테이션을 활용하는것이다. 

 

위 방법을 사용하면 인자값으로 여러 속성들을 결정할 수 있어서, 클라이언트에게 받는 파라미터를 조금 더 엄격하게 관리할 수 있다.

 

위 코드를 기준으로 예를 들면, required 속성이 false인 age는 꼭 필요한 파라미터는 아니라는 의미고,

name은 required가 없으면 기본 값은 true기 때문에 프론트단에서 name 파라미터를 넘기지 않는다면 에러를 발생시킨다.

 

바로 이러한 점이 엄격하게 파라미터를 받는다는 점이다.

 

하지만 위 코드는 단 2개의 파라미터만 받기 때문에 저렇게 사용해도 문제가 되지는 않지만.

바로 위와 같이 수 많은 파라미터를 받아야하는 경우는 코드의 가독성에 문제가 생긴다. (실제 동작엔 이상없지만)

 

그래서 사용할 수 있는 방법이 바로 Map을 이용하는 것이다.

 

    @PostMapping("/getParam")
    public void getParam(@RequestBody Map<String,String> param) {
 
 		String age = param.get("age");
 		String name = param.get("name"); 
    }

위와 같이 사용한다면 클라이언트가 넘겨준 데이터를 key : value 형태로 받아서 map 객체에 저장한다.

 

다만 이 방법을 사용하려면 json 형태로 데이터가 전송되어야하고 

 

파라미터에 required 속성을 넣을 수 없기 때문에 메서드 안에서 조건 처리를 해야한다.

 

위 두 가지 방법을 적절히 섞어서 가독성이 좋은 코드를 만들어보자.

728x90
728x90

댓글