REST(Representational State Transfer) 원칙을 따르는 API
자원, 자원의 이름, URI
시스템 내의 모든 것을 자원으로 간주한다.
자원은 웹 서비스에서 제공하는 정보 또는 기능을 의미하며, 고유한 ID를 가지고 이를 통해 식별된다.
자원의 상태
서버에서 관리되는 해당 자원의 데이터 또는 속성을 의미한다.
이 상태는 시간에 따라 변할 수 있으며, 클라이언트의 요청에 따라 변경 될 수 있다.
예를 들어, 쇼핑몰의 특정 상품은 가격, 수량, 설명 등의 상태를 가지고 있다.
표현
자원의 상태를 클라이언트-서버 간에 교환 될 수 있는 형식으로 변환한 것을 의미한다.
JSON, XML, HTML 등의 형식으로 작성될 수 있으며, 클라이언트가 이해할 수 있는 형태로 제공된다.
행위
클라이언트는 URI을 이용해 자원을 명시하고, 이를 조작하기 위해 메서드를 사용한다.
HTTP 프로토콜에서는 GET, POST, PUL DELETE같은 메서드를 제공한다.
클라이언트 - 서버 구조 (Client-Server Architecture)
클라이언트와 서버는 각각 독립적인 역할을 수행하며, 서로의 구현(개발)에 관여하지 않는다.
자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client.
무상태 (Stateless)
서버는 클라이언트의 상태를 저장하지 않는다.
각 요청은 독립적으로 처리되고, 클라이언트는 필요한 모든 정보를 요청에 포함해야 한다.
캐시 처리 (Cacheable)
클라이언트는 서버로부터 받은 응답을 캐시에 저장할 수 있어야 한다.
캐싱을 통해 네트워크의 부하를 줄이고 성능을 향상 시킬 수 있다.
계층화 (Layered System)
서버는 여러 계층으로 구성될 수 있고, 각 계층은 독립적인 기능을 수행한다.
API 서버는 순수 비즈니스 로직을 수행한다.
이를 통하여 시스템의 유연성과 확장성을 향상 시킬 수 있다.
인터페이스 일관성 (Uniform Interface)
일관된 인터페이스를 제공하여 상호작용을 단순화하고 재사용성을 높인다.
표준 HTTP 메서드를 사용하여 자원에 접근하고 조작한다.
즉,
웹에 존재하는 모든 자원에 고유한 URI를 부여하여 자원을 명시하고,
HTTP 메서드를 사용하여 자원을 조작하는 행위를 의미한다.