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
'Java' 카테고리의 다른 글
Could not initialize class org.codehaus.groovy.runtime.InvokerHelper (0) | 2021.03.12 |
---|---|
NPE의 대처 방안 Optional (0) | 2021.03.01 |
JSON 파싱하기. (0) | 2021.02.01 |
Error]Intelli J]Unable to parse template "Class" (0) | 2021.01.06 |
JAVA]TDD(Test Driven Develop) 테스트 주도 개발 (0) | 2020.12.22 |
댓글