REST(Representational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API이다.
HTTP URL을 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다. 즉, 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고, HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처를 의미한다.
API에서 자원들은 각각의 독립적인 인터페이스를 가지며 각각의 자원들이 URL 자원식별, 표현을 통한 자원조작(Method를 통한), Self-descriptive messages, HATEOAS 구조를 가지는 것을 말한다.
예를 들어 웹페이지가 변경했다고 웹 브라우저를 업데이트 하는 일이 없어야 한다.
HATEOAS 구조
HATEOAS(Hypermedia as the Engine of Application State)는 하이퍼링크에 따라 다른 페이지를 보여줘야 하며, 데이터마다 어떤 URL에서 원했는지 명시해주어야 하는 것을 의미한다.
REST는 무상태성 성격을 갖습니다. 이는 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. HTTP 자체가 Stateless이기 떄문에 HTTP를 이용하는 것만으로도 만족한다.
그리고 이는 REST API를 제공해주는 서버는 세션(session)을 해당 서버 쪽에 유지하지 않는다는 의미이다. 즉 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 된다.