데이터를 전달 받을 때 어떻게 전달받아야 하는가?(RequestBody, RequestParam)

Better late than never·2022년 9월 15일
0

?

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를 사용

0개의 댓글