Representational?
- 어떠한 리소스의 특정 시점의 상태를 반영하고 있는 정보.
- Representation data, representation metadata로 구성
- “hello” ⇒ representation data
- “Content-Type: text/plain”, “Content-Language:en” ⇒ representation metadata
REST(Representational State Transfer) ?
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시
- HTTP Method(POST, GET, PUT …) 을 통해 해당 자원에 대한 CRUD Operation을 적용하는 것
- Create : 생성(POST)
- Read : 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE)
- Head : header 정보 조회(HEAD)
- 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- 웹이 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
- 네트워크 상에서 Client와 Server사이의 통신 방식 중 하나
서버와 클라이언트의 역할을 명확하게 분리할 수 있음
HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능
표준이 존재하지 않음
왜 REST를 써야 할까?
- 다양한 클라이언트들이 등장하면서 서비스와 데이터 제공을 분리해야 할 필요가 생김
- 멀티 플랫폼의 등장, 상호 간의 호환이 좋지 않은 경우가 있음
REST 구성 요소
- 자원(Resource) : HTTP URI
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재
- 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI
- 행위(Verb) : HTTP Method
- HTTP 프로토콜의 Method 사용
- 표현(Representations of Resource) : HTTP Message Payload
- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답을 보냄
- JSON, XML, TEXT, RSS 등
REST의 특징
- Uniform Interface
- 하나의 URL에는 하나의 데이터만 가져와야 함
- HTTP 표준에만 따른다면 모든 플랫폼에서 사용이 가능하며 URI로 지정한 리소스에 대한 조작을 가능하게 하는 아키텍처 스타일
- 특정 언어나 기술에 종속되지 않음
- Server-Client(서버-클라이언트 구조)
- 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
- Stateless(무상태)
- HTTP 프로토콜이 Stateless Protocol 이므로, REST 역시 무상태
- Client의 context를 Server에 저장하지 않음
- Cacheable(캐시 처리 가능)
- HTTP 프로토콜을 그대로 사용하므로 캐싱 기능을 적용할 수 있음
- Last-Modified 태그, E-Tag를 활용하면 구현 가능
- Layred System(계층화)
- 다중 계층우로 구성 가능
- API Server는 순수 비즈니스 로직을 수행하고 그 앞단에 보안, 로드 밸런싱, 암호화 등을 추가하여 구조상의 유연성
- 다중 계층우로 구성 가능
- Code on Demand
- Server로부터 스크립트를 받아 Client에서 실행, 반드시 충족될 필요는 없음
REST API ?
- REST를 기반으로 API를 구현한 것
REST API의 설계 예시
CRUD | HTTP Method | Route |
resource 들의 목록을 표시 | GET | /resource |
resource 하나의 내용을 표시 | GET | /resource/:id |
resource를 생성 | POST | /resource |
resource를 수정 | PUT | /resource/:id |
resource를 삭제 | DELETE | /resource/:id |
'CS > 네트워크' 카테고리의 다른 글
3 Way-Handshake, 4 Way-Handshake (2) | 2022.12.19 |
---|---|
HTTP와 HTTPS (0) | 2022.12.09 |
HTTP 메소드와 상태코드 (0) | 2022.11.29 |
OSI 7계층 & Internet 5계층 (0) | 2022.11.27 |
Circuit Switching vs Packet Switching (0) | 2022.11.27 |