?
Contoller 개발 시 url로 전달 받는 방식이 익숙해져서 @RequestParam을 많이 쓰곤 했는데 로그인 시 Form에서 Body에서 전달하는 방식으로 통신을 할 때는 RequestBody을 사용하라고 하는데 어떨 떄 써야 적제적소 인지 궁금해서 검색
RequestBody VS RequestParam
RequestBody, RequestParam 어노테이션의 차이
from 태그로 데이터 전달(name=jun / age = 13)
- RequestBody : name=jun&age=13
String 으로 전달되어 전달된 데이터를 사용하기에는 불편함이 있다.
- RequestParam : name=jun, age=13
@RequestBody 로 데이터를 받을 때는 메서드의 변수명이 상관이 없었지만, @RequestParam 으로 데이터를 받을때는 데이터를 저장하는 이름으로 메서드의 변수명을 설정해주어야 한다. -> 해당 변수에 알맞게 들어와서 데이터 쓰기가 편하다
Json형식으로 데이터 전달(Ajax를 통해 name, age전달)
{name : "jun", age : "13} 이라는 데이터가 Json의 형태로 전송
- RequestParam : url?name=jun&age=13으로 호출해야 전송가능
- RequestBody : 해당 값 전송 이벤트나 버튼 클릭시 바로 전송가능(url 변동x)
각각 쓰임새
- RequestBody
- DTO가 있다면 해당 DTO를 통해서 데이터전달이 가능(RequestParam은 불가능, 해당 DTO의 형식 맞는 url값을 보내도 에러 발생)
- url상에서 데이터 전달하는 외의 모든 경우, 쓸데없이 url값에 데이터를 붙여줄 필요가 없음
- url값이 그대로 유지되기 떄문에 보안안전
- 데이터를 객체만 전달하기 때문에 객체를 다른곳에서 운영하는 경우 개발자모드에서도 해당 값을 확인 할 수 없음
- RequestParam : url상에서 데이터를 전달하는 경우(form 태그 등), 간단한 경우 변수를 통해 String으로 받아 가공할 수 있음
-> 결론 : 파라미터를 JSON형식으로 받을 경우 RequestBody를 사용