REST
REST란
- REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
- 쉽게 말하면 REST란,
- HTTP URL(Uniform Resorce Identifier)를 통해 자원(Resource)를 명시하고,
- HTTP Method(POST, GET, PUT, PATCH, DELETE)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미
- Create(생성) : POST
- Read(읽기) : GET
- Update(갱싱) : PUT, PATCH
- Delete(삭제) : DELETE
REST 구성 요소 3가지
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 표현(Representations) : 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태(HTTP Message Pay Load(HTTP 메세지로 전송되는 데이터))
REST의 특징
- Client-Server(클라이언트-서버 구조) : 자원이 있는 Server, 자원을 요청하는 Client의 구조를 가진다.
- Stateless(무상태) : HTTP는 Stateless 프로토콜이므로 REST역시 무상태성을 가진다(클라이언트의 Context를 서버에 저장하지 않는다).
- Cacheable(캐시 처리 가능) : HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다ㅏ.
- Layered System(계층화) : API 서버는 순수 비즈니스 로직을 수행하고 그 앞단에 사용자 인증, 암호화, 로드 밸런싱 등을 하는 계층을 추가하여 구조상의 유연성을 줄 수 있음
- Uniform Interface(인터페이스 일관성) : URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다(HTTP Method).
- 자체 표현 구조 : 명사(URI) + 동사(Method) 구조로 이루어져 있어, 어떤 것에 어떤 행위를 하는지 직관적으로 알 수 있음
REST 장점
- 쉬운 사용
- HTTP 프로토콜 인프라를 그대로 사용
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능
- 클라이언트-서버 역할의 명확한 분리
- 클라이언트는 REST API를 통해 서버와 정보를 주고받음. REST의 특징인 Stateless에 따라 서버는 클라이언트의 Context를 유지할 필요가 없음
- REST API 메시지는 의도하는 바를 명확하게 나타냄(직관적)
- 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화함