클라이언트와 서버의 비동기 통신 처리
웹에서 이루어지는 데이터 통신은 Client와 Server 간에서 이루어진다.
ex) Client = 로그인 폼에 ID/PW를 입력 후 '로그인' 버튼을 클릭하면 입력한 데이터가 서버로 넘어가 요청
Server = 서버는 이를 판단해 로그인 여부를 결정한 후 클라이언트에 응답
비동기 통신이란 ?
웹페이지를 새로고침하지 않고도 데이터를 불러오는 방식. (데이터가 서버와 주고 받아지는 방식)
ex ) 네이버 블로그나 카페에서 댓글을 작성하고 작성 버튼을 누르면 페이지 전체가 reload 되지 않고 댓글 영역 부분만 업데이트 되어 댓글이 적용됨을 볼 수 있다.
비동기 통신 시 요청과 응답메세지를 본문(Body)에 담아야하며, 본문에 담는 데이터 형식은 요즘 웹 개발에서 가장 많이 사용하는 JSON 이다. 이 때 @RequestBody와 ResponseBody 를 사용한다.
- JSON (Javascript Object Notation) = 속성-값 쌍(attribute-value paris)으로 이루어진 데이터 구조로, 비동기 브라우저/서버 통신(AJAX)에서 주로 사용되며, XML을 대체하는 주요 데이터 포맷
@RequestBody와 @ResponseBody의 역할
- @RequestBody : 요청 본문을 자바 객체로 변환
클라이언트에서 보낸 요청 본문에 담긴 데이터를 자바 객체로 변환함.
VO나 DTO를 이용해 데이터를 받을 때 @RequestBody를 사용해 객체로 쉽게 변환 가능. ( 예전에는 HttpServletRequest를 이용해 가져왔었음) - @ResponseBody : 자바 객체를 JSON으로 응답
서버에서 클라이언트로 데이터 응답할 때는 @ResponseBody 사용하여 자바 객체를 JSON 형태로 변환하여 클라이언트에 응답. (서버는 클라이언트가 쉽게 이해할 수 있는 형식으로 데이터 전달할 수 있게 됨)
여기서 든 생각, @RequestBody와 @ModelAttribute의 차이점이 뭘까 ?
공통점 = 클라이언트에서 보낸 데이터를 java object로 변환
차이점
@RequestBody : HttpMessageConverter를 통해 파싱된 HTTP 요청 본문이 Java 객체로 변환
@ModelAttribute : Http 파라미터 데이터를 Java 객체에 매핑 (단 쿼리 string 및 form 형식이 아닌 데이터는 처리 불가)
#요약
클라이언트 > 서버 데이터 보낼 때 JSON 형태로 요청하면 서버는 @RequestBody 어노테이션 이용해 HTTP 요청 본문에 담긴 값을 자바 객체로 변환.
서버에서 클라이언트로 데이터 응답 시에는 자바 객체를 JSON으로 변환해 @ResponseBody 어노테이션 사용하여 응답 본문 전송.
'Backend' 카테고리의 다른 글
[DB]시퀀스와 인덱스 (0) | 2025.01.26 |
---|---|
[Oracle] hash join 으로 성능개선 (0) | 2025.01.26 |
[JAVA] 디자인 패턴이란 ? 자주 쓰이는 디자인 패턴은 ? (0) | 2025.01.12 |
[JAVA] 컬렉션 Collection 정리 (LIST, SET, MAP) (1) | 2025.01.05 |
Spring AOP Order (0) | 2025.01.04 |