- 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식
- 자원( Resource )의 표현( Representation )에 의한 상태전달 ( State Transfer )
REST의 RESOURCE
- URI
: 자원을 구별하는 ID
: URI을 통해 자원을 지정하여 그의 상태에 대한 정보를 서버에 요청.
REST의 METHOD
: 어떤 자원에 대한 Create, Read, Update, Delete 연산 수행을 위한 방식
- POST : Create - 클라이언트에서 서버로의 정보 입력
- GET : Read - URI를 통해 지정된 자원에 대한 정보를 요청
- PUT : Update - 전체 데이터 정보에 대한 내용 갱신
- PATCH : Update - 일부 데이터 정보에 대한 내용 갱신
- DELETE : Delete - 정보의 삭제
REST의 Representation
: 주로 JSON이나 XML 형태로 데이터를 주고 받는다.
인터페이스 일관성 (Uniform Interface)
: 일관적인 인터페이스로 분리되어야 한다.
: 지정된 Resource에 대한 요청을 통일하고 한정적인 인터페이스( CRUD ) 로 수행하여야한다.
: 플랫폼이나 특정 기술에 상관없이 HTTP 표준에 따른다면 모든 플랫폼에서 사용 가능해야 한다.
무상태 (Stateless)
: 클라이언트의 Context가 서버에 저장이 되어서는 안된다.
: 각각의 요청을 완전히 별개의 것으로 인식하여 이전 요청이 다음 요청에 연관 되어서는 안된다.
캐시 처리 가능 (Cacheable)
: 클라이언트는 응답을 캐싱할 수 있어야한다.
계층화 (Layered System)
: 중간서버를 통해 연결하여 로드 밸런싱 기능이나 공유 캐시 기능을 이용할 수 있다.
: 각 레이어는 바로 다음 레이어만 보고 상호작용하도록 제한 된다.
주문형 코드 (Code on demand, Optional)
: 선택적 제약 조건
: 서버가 실행 코드를 클라이언트에 보낼 수 있는 기능
클라이언트 - 서버 구조 (Client-Sever)
: 네트워크가 요청하는 클라이언트와 요청을 받는 서버로 구성된다.
: 서로의 역할을 구분함으로써 각자 독립적으로 진화 할 수 있다.
: REST의 설계규칙을 잘 지켜서 설계된 API