REST
Representational State Transfer의 약자로 웹 상의 자원을 HTTP URI 형태로 표현하고 HTTP Method를 통해 자원을 조작할 수 있는 아키텍처를 의미한다.
REST 특징
Server-Client 구조
- 자원이 있는 쪽이 Server, 자원 요청하는 쪽이 Client가 된다.
- Server -> API를 제공하고 비지니스 로직 처리 및 저장을 담당
- Client -> 사용자 인증, Context등을 관리한다.
- 서로 간의 의존성이 줄어듬
Stateless
- Client의 context를 서버에서 저장하지 않는다.
- Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.
- 각 서버는 Client의 요청만 단순히 처리
- 서버의 처리 방식에 일관성을 부여하고, 부담이 줄어든다.
Cachable
Layered System
- Client는 서버에 직접 연결한 건지, 중간 계층을 거친건지 알 수 없어야 한다.
그저 Client는 서버만 호출하고 서버는 다중계층으로 구성해서 보안 및 확장성을 챙길 수 있다.
Code-On-Demand - Optional
- 서버로부터 script를 받아서 Client에서 실행한다.
- URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행
- HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용가능하다
REST 장점
- HTTP 프로토콜을 사용하기에 별도의 인프라 구축필요가 없다.
- 특정 언어나 기술에 종속되지 않는다.
- REST Api 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악 가능하다.
- 서버와 클라이언트의 역활을 명확하게 분리한다.
RESTful 기본 규칙
- 자원 각각을 메세지에 의해 식별 가능해야 한다. 자원은 XML이나 JSON형태를 가진다.
- 자원에 대한 행위는 HTTP Method(GET, POST, UPDATE, DELETE)로 표현한다.
- URI에 HTTP Method가 들어가면 안된다.
- URI에 동사가 들어가면 안된다.