REpresentational State Transfer의 약자로, 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method를 통해 해당 자원을 처리(CRUD)한다.
✍️ HTTP란 무엇인가?
HyperText Transfer Protocol의 약자로, 80번 포트를 사용하여 웹 상에서 정보를 주고받을 수 있는 프로토콜이다.
HTTP의 등장 초기에는 주로 텍스트를 전송하기 위한 프로토콜이었지만, 점차 기능이 늘어가면서 다양하게 사용되는 프로토콜이 되었다.🙂 특징
Connectionless: 용건이 있을 때만 소켓을 사용해서 연결 -> Server에 여유가 생겨서 더 많은 접속에 대해 대응할 수 있다.Stateless: Server가 Client의 상태를 기억하지 못한다. -> Server가 Client를 기억해야 하는 경우 쿠키나 세션, 토큰 등을 사용한다.⚙️ 동작 방식
Request: client가 server에 Header와 Body로 이루어진 메세지를 요청Response: server에서 client가 보낸 request를 처리하고 응답 코드와 함께 결과를 반환🛠 HTTP Method
GET: 서버에 자원 요청
HEAD: GET과 같지만 body를 포함하지 않음
POST: 클라이언트에서 요청한 URL에 body의 내용으로 새로운 자원 생성
PUT: 클라이언트가 요청한 내용으로 서버에 있는 자원을 수정 (HTTP 자체에는 인증 기능이 없다는 보안상의 문제로 REST를 사용할 때 이용한다.)
DELETE: 서버에 있는 자원 삭제
CONNECT: 요청한 자원에 대해 양방향 연결을 수립 예) SSL로 암호화하여 프록시에 터널링 요청
OPTIONS: 서버가 어떤 HTTP 메소드를 지원하는지 물어봄
TRACE: 메세지의 변조 여부 확인을 위해, 서버가 수신한 클라이언트의 메세지 반환 (보안상의 문제 때문에 보통 사용 잘 안함)
PATCH: 서버에 있는 자원의 일부만을 수정 (vs. PUT은 자원 전체를 수정)
1. Server-Client 구조
REST Server: API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다.Client: 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임진다.2. Stateless(무상태)
3. Cacheable(캐시 처리 가능)
4. Layered System(계층화)
5. Uniform Interface(인터페이스 일관성)
REST를 기반으로 서비스의 API를 구현한 것이다.
✍️ API란 무엇인가?
Application Programming Interface의 약자로,
말 그대로 애플리케이션 프로그램들이 인터페이스를 통해서 서로 통신(요청, 응답)할 수 있게 도와주는 매커니즘이다.
REST API | PoiemaWeb
REST란? REST API란?
그림으로 배우는 HTTP & Network