클라이언트와 서버의 통신 방식 중 하나이다.
Restful은 Rest가 적용된 시스템으로 Rest API를 제공하는 시스템은 Restful하다고 표현한다.
1. 일관된 인터페이스 (Uniform interface)
URI 사용, HTTP 메소드 사용, RPC 미호출 등의 지정된 인터페이스를 준수
2. 클라이언트/서버 구조
클라이언트는 서버에 요청(Request) 메시지를 전송하고
서버는 요청에 대한 응답(Response) 메시지를 전송한다.3. 비연결성(Statelessness)
세션 등 이전 상황(문맥) 없이도 통신할 수 있다.
4. 캐시 가능(Cachable)
서버의 응답 메시지는 캐싱(저장 후 재사용)될 수 있다.
5. 계층화된 시스템(Layered System)
계층별로 기능이 분리되므로 중간 계층의 기능(로드 밸런싱, 서버 증설, 인증 시스템 도입 등)이 변경되어도 통신에 영향을 주지 않는다.
6. 주문형 코드(code on demand) *선택사항
손쉬운 데이터 처리를 위해 서버는 클라이언트에서 실행될 스크립트를 전송할 수 있다.
REST는 아키텍처 스타일로, 가이드 정도의 의미로 사용되어 명확히 준수할 필요 없다. 따라서 특히나 1번 조건을 준수하지 않으나 REST에 해당된다고 하는 경우도 종종 있다.