HTTP 기반의 요청-응답 구조로 자원 관리와 상태 비저장성을 특징으로 하는 웹 서비스이다.
Representational State Transfer 원칙을 따르는 모든 API를 의미한다.
REST API
와 RESTful API
는 자주 혼용되지만, 실제로는 조금 다른 개념이다.
REST 원칙을 다소 느슨하게 적용해도 REST API
라고 부를 수 있는 반면, RESTful API
는 REST 원칙을 지대로 구현한 API를 지칭하는 데 더 중점을 둔다.
이름으로 구분되는(Representational) 자원의 상태(State)를 주고받는(Transfer) 모든 것을 의미한다.
클라이언트-서버 구조
무상태성(Stateless)
캐시 가능(Cacheable)
일관된 인터페이스(Uniform Interface)
계층화(Layered System)
확장성: 클라이언트와 서버가 독립적으로 개발 및 배포될 수 있다.
유연성: REST는 다양한 형식(JSON, XML, HTML 등)으로 데이터를 교환할 수 있다.
명확한 자원 관리: URL을 통해 자원을 명확하게 정의하고, HTTP 메서드를 통해 자원에 대한 작업을 표현한다.
GET /products/1
은 ID가 1인 상품 조회, POST /products
는 새 상품 등록. PUT /products/1
은 ID가 1인 상품의 전체 정보 수정, DELETE /products/1
은 상품 삭제라는 점이 명확하게 드러난다.복잡한 요청 처리: 상태 비저장성을 유지하면서 복잡한 요청 간 상호작용을 관리하는 것이 어려울 수 있다.
대용량 데이터 처리: HTTP 요청이 자주 발생하는 경우, 트래픽이 늘어나 성능 이슈가 발생할 수 있다.
서버와 클라이언트 간의 데이터 전송을 위한 프로토콜 혹은 기술로, 다양한 상황에 맞춰 사용할 수 있다.
REST는 자원을 HTTP URI로 식별하고, HTTP 메서드를 통해 해당 자원에 대한 작업을 정의하는 아키텍처 스타일을 의미하고, REST API는 이 원칙을 기반으로 하는 API 입니다.
가장 큰 특징으로는 클라이언트-서버 구조, 캐셔블, 무상태성 등이 있습니다.
이로 인해 클라이언트 서버는 독립적으로 개발될 수 있어 상호의존성은 낮아지지만 서로의 상태를 저장하지 않아 필요한 모든 정보를 요청에 포함시켜야 한다는 단점도 있습니다.