1) 정적컨텐츠: 파일을 그대로 웹브라우저에 내려줌
2) MVC(Model, View, Controller): 가장 많이 쓰는 방식 html을 서버에서 변형해 동적으로 내려줌
3) API: JSON이라는 데이터 구조 포맷으로 클라이언트에게 데이터 전달 (View 없음)
클라이언트와 서버의 비동기 통신
요청(request)메시지: 클라이언트에서 서버로 통신하는 메시지
응답(response)메시지: 서버에서 클라이언트로 통신하는 메시지
웹에서 화면전환(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신
-> 클라이언트에서 서버로 요청 메시지를 보낼 때, 본문에 데이터를 담아 보내야 함, 서버에서 클라이언트로 응답을 보낼 때에도 본문에 데이터를 담아서 보내야 함
-> 본문: body
즉, 요청본문 requestBody & 응답 본문 responseBody를 담아서 보내야 함
이때 본문에 담기는 데이터 형식 중 대표적으로 사용되는 것이 Json
즉, 비동기식 클라이언트 - 서버 통신을 위해 JSON 형식의 데이터를 주고 받는 것
Json이란?
- 키와 값 한쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷
- 자료의 종류에 제한 딱히 X, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합
JSONP
- 클라이언트 말고 다른 도메인에 있는 서버로부터 데이터 요청 시 사용됨
- JSON 데이터를 클라이언트가 지정한 콜백함수로 감싸(padding) 클라이언트에 전송
- 자바스크립트는 서로 다른 도메인에 대한 요청을 보안상 제한 -> JSONP 방식 사용
- callback은 서버에서 지원
callback
- 함수가 끝나고 난 뒤 실행되는 함수
- 자바스크립트에서 함수는 객체, 함수는 함수를 인자로 받고 다른 함수 통해 반환 가능
- 인자로 대입되는 함수를 콜백함수라 함
- 자바스크립트는 이벤트 중심 언어, 이벤트 값이 반환될 때까지 기다리지 않고 다음 이벤트 진행
- 비동기적인 함수 실행할 경우 대표적으로 API 요청 등에서 특별한 처리 안해주면 함수 원하는대로 실행 어려움
- 콜백은 다른 코드가 특정 코드가 마무리되기 전에 실행되지 않도록 (비동기처리) 위한 방법
@RequestBody
- http 요청의 본문이 그대로 전달
- json 기반 메시지 사용하는 요청의 경우 유용하게 쓰임
- http 요청의 본문 내용을 통째로 자바 객체로 변환하여 매핑된 메소드 파라미터로 전달
@ResponseBody
- 자바 객체를 http 요청의 본문 내용으로 매핑하여 클라이언트로 전송
- 메세지 변환기 중 해당 미디어 타입과 파라미터 타입 처리 가능하면 http 요청의 본문부분을 통째로 변환하여 지정된 메소드 파라미터로 전달함
- 즉, http 요청 본문을 자바 객체로 전달받을 수 있음
@RestController
- @Controller와 달리 리턴값에 자동으로 @ResponseBody가 붙어 별도 어노테이션 명시안해줘도 http 응답데이터에 자바 객체가 매핑되어 전달됨
- @Controller인 경우 바디를 자바 객체로 받기 위해 @ResponseBody 어노테이션을 반드시 명시해주어야 함
'Old > Spring' 카테고리의 다른 글
스프링 빈과 의존 관계 (0) | 2023.02.09 |
---|---|
Repositiry / Service / Test (0) | 2023.02.01 |
Controller와 GetMapping (0) | 2023.01.23 |