REST의 특징
- client-server:
- 자원을 가진 쪽이 서버, 요청하는 쪽이 클라이언트이다.
- 서버는 API를 제공, 클라이언트는 사용자 인증, Context(세션, 로그인 정보) 등을 구분하여 서로 간의 의존성을 줄인다.
- stateless:
- 서버는 각가의 요청을 별개의 것으로 인식하고 처리한다. 이를 통해 서버 처리의 일관성을 부여하고, 서버의 부담을 줄인다.
- cacheable :
- 웹 기존 인프라 중 하나인 캐시를 구현할 수 있고, 요청에 대한 효율적인 처리가 가능해진다.
- uniform interface :
- URI에 대한 요청을 통일되고 한정적으로 수행한다.
- 클라이언트의 플랫폼에 무관하며 특정 언어, 기술에 종속받지 않는다.
- uniform interface의 스타일
- 리소스가 URI로 식별되어야 한다.
- 리소스를 생성, 수정, 추가하고자 할 때 HTTP 메세지에 표현해서 전송해야한다.
- 메세지는 스스로 설명할 수 있어야 한다.
- 에플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.(HATEOAS)
- layered system :
- 서버는 다중 계층으로 구성될 수 있다. 중간 매체가 존재할 수 있으며 클라이언트는 중간 매개체의 존재 여부를 알 수 없다.
- code-on-demand (optional) :
- 요청 메세지만 보고 이해할 수 있는 자체 표현 구조로 되어있다.
- GET/ members : 모든 멤버의 정보를 달라는 요청
- PUT/ members/1 : 멤버 중 1번을 수정하라는 요청
- POST/ members/1 : 멤버 중 1번 리소스를 생성하라는 요청
- DELETE/ members/1 : 멤버 중 1번 리소스를 삭제하라는 요청
Reference: