Computer Engineering/Spring

API

onenewkong 2023. 1. 29. 16:17

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 어노테이션을 반드시 명시해주어야

 

 

'Computer Engineering > Spring' 카테고리의 다른 글

스프링 빈과 의존 관계  (0) 2023.02.09
Repositiry / Service / Test  (0) 2023.02.01
Controller와 GetMapping  (0) 2023.01.23