본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.
AJAX
- 웹 페이지에서 서버와 비동기적으로 데이터를 주고받을 수 있게 해주는 기법
- 일부분만 업데이트가 가능하다.
- 핵심은 XMLHttpRequest 객체, 응답은 XML 형식일 수 있지만 텍스트나 JSON 형식일 수도 있다.
HTTP
- 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 통신규약
- 요청과 응답으로 구성, 각각에는 메소드, 헤더, 바디 등의 요소가 있다.
- 상태가 없는 프로토콜이므로, 각 요청과 응답은 독립적이며 서로 연관성이 없다.
- 상태정보를 유지하기 위해서는 쿠키, 세션, 토큰등의 방법을 사용한다.
REST
- 웹에서 사용되는 모든 데이터나 자원은 HTTP URI로 표현하고, 표준 HTTP 메소드(GET, POST 등)를 이용하여 자원에 대한 CRUD연산을 수행한다.
- CRUD란 Create, Read, Update, Delete를 의미한다.
- 제약조건
- 클라이언트 서버 : 클라이언트와 서버가 분리되어 서로의 역할을 명확하게 구분
- 무상태성 : 서버는 클라이언트의 상태정보를 저장하지 않고 매번 새롭게 처리
- 캐시가능 : 클라이언트는 서버의 응답을 캐시할 수 있고, 유효기간 내에 재사용 가능
- 계층화
- 코드 온 디맨드 : 선택적 제약조건이며, 서버가 실행가능한 코드를 클라이언트에 전송, 기능확장
- 자체표현적 : 요청과 응답은 메세지가 스스로 설명되어야 한다.
Rest API
- Rest 아키텍처 스타일을 따르는 웹 서비스의 API
- API는 사용자가 특정 기능을 사용할 수 있도록 제공하는 함수를 의미
- Rest API는 HTTP의 요청메소드에 응하는 서버 API와 클라이언트 간 통신의 구조가 지켜야 할 좋은 방법을 명시한 것
- 자원의 식별자(URI), 자원에 대한 행위(HTTP 메소드), 자원에 대한 표현(페이로드 포맷)으로 구성
- 특징
- 유니폼 인터페이스 : 요청과 응답이 일관된 형식을 갖도록 한다.
- 주소지정가능 : 각 자원은 고유한 URI를 가지며, 해당 URI로 접근할 수 있다.
- 연결성 : 하나의 자원이 다른 자원과 연결될 수 있다.
- 상태전이
HTTP 메소드
- 클라이언트가 서버에게 요청하는 작업의 종류를 나타내는 단어
- 종류
- GET : 서버에게 자원을 요청
- 서버의 상태나 데이터베이스에 영향을 주지 않아야 한다.
- POST : 서버에게 자원의 생성을 요청
- PUT : 서버에게 자원의 전체 수정을 요청
- 동일한 요청을 여러번 보내도 결과가 같아야 한다.
- PATCH : 서버에게 자원의 부분 수정을 요청
- 동일한 요청을 여러번 보내면 결과가 달라질 수 있다.
- DELETE : 서버에게 자원의 삭제를 요청
HTTP 상태코드
- 서버가 클라이언트한테 응답할 때 전달하는 세자리 숫자
- 종류
- 1xx(Informational) : 요청이 수신되었으며 처리중임을 나타낸다.
- 2xx(Success) : 요청이 성공적으로 처리되었음을 나타낸다.
- 3xx(Redirection) : 요청을 완료하기 위해 추가 작업이 필요함을 나타낸다.
- 4xx(Client Error) : 클라이언트의 요청이 잘못되었음을 나타낸다.
- 5xx(Server Error) : 서버가 정상적인 요청에 대해 처리할 수 없음을 나타낸다.
HTTP 헤더와 바디
- HTTP 헤더
- 요청과 응답에 대한 추가적인 정보를 나타내는 키-값 쌍의 집합
- 콘텐츠 관련정보, 인증관련정보, 쿠키정보, 캐시관련정보 등 서버와 클라이언트 간 통신 시 필요한 정보를 담는다.
- 클라이언트 요청 시, 서버응답 시 모두 헤더에 정보를 담을 수 있다.
- 종류
- 일반헤더 : 요청과 응답 모두에 적용되는 정보 ex) Date
- 요청헤더 : 요청에 대한 정보 ex) Host
- 응답헤더 : 응답에 대한 정보 ex) Location
- 엔티티헤더 : 바디에 포함된 자원에 대한 정보 ex) Content-Type
- 확장헤더 : 사용자 정의의 정보 ex) X-Requested-With
- HTTP 바디
- 요청과 응답이 실제로 전달되는 데이터
- 형식은 Content-Type 헤더에 따라 달라질 수 있으며, 일반적으로 Rest API에서는 JSON이나 XML등의 구조화된 데이터 포맷을 사용
JSON
- 자바스크립트의 객체표기법을 기반으로 한 경량의 데이터 교환 형식
- 키-값 쌍의 집합으로 구성, 키는 문자열
- 다른 프로그래밍 언어에서도 쉽게 파싱할 수 있으며, Rest API에서 주로 사용되는 페이로드 포맷이다.