WIPIVERSE

REST

REST(Representational State Transfer)는 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 스타일이다. 2000년 로이 필딩(Roy Fielding)이 박사 학위 논문에서 처음 정의하고 명명하였다. 월드 와이드 웹(World Wide Web)의 아키텍처 원리를 일반화하여, 네트워크 기반 애플리케이션의 확장성, 성능, 단순성, 수정 용이성, 가시성, 이식성, 신뢰성을 보장하기 위한 제약 조건들의 집합으로 설명된다.

주요 제약 조건 REST 아키텍처 스타일은 다음과 같은 6가지 주요 제약 조건을 따른다.

  1. 클라이언트-서버(Client-Server): 사용자 인터페이스 관심사와 데이터 저장 관심사를 분리하여 클라이언트와 서버가 독립적으로 진화할 수 있도록 한다.
  2. 무상태성(Stateless): 클라이언트에서 서버로의 각 요청은 해당 요청을 이해하는 데 필요한 모든 정보를 포함해야 한다. 서버는 클라이언트 컨텍스트(세션 상태)를 저장하지 않는다.
  3. 캐시 가능(Cacheable): 응답 데이터는 캐시 가능 여부를 명시적으로 표시하여야 하며, 캐시 가능한 경우 클라이언트는 해당 데이터를 향후 동등한 요청에 재사용할 수 있다.
  4. 계층화 시스템(Layered System): 아키텍처는 계층적으로 구성될 수 있으며, 각 구성 요소는 자신이 직접 상호작용하는 계층 이외의 계층을 알 수 없다.
  5. 통일된 인터페이스(Uniform Interface): 아키텍처를 단순화하고 구성 요소 간의 결합도를 낮추기 위해 다음과 같은 4가지 제약 조건을 적용한다.
    • 자원의 식별(Resource Identification)
    • 표현을 통한 자원 조작(Manipulation of Resources Through Representations)
    • 자기 서술적 메시지(Self-descriptive Messages)
    • 애플리케이션 상태의 엔진으로서의 하이퍼미디어(HATEOAS, Hypermedia as the Engine of Application State)
  6. 코드 온 디맨드(Code on Demand, 선택 사항): 서버는 애플릿이나 스크립트 등 실행 가능한 코드를 클라이언트에게 전송하여 클라이언트 기능을 일시적으로 확장할 수 있다.

자원 및 표현 REST에서 핵심 추상화 개념은 자원(Resource)이다. 모든 정보는 자원으로 식별되며, URI(Uniform Resource Identifier)를 통해 전역적으로 주소 지정된다. 클라이언트와 서버는 자원의 상태를 나타내는 표현(Representation)을 교환하며, 표현은 미디어 타입(예: JSON, XML, HTML)으로 인코딩된다.

HTTP와의 관계 REST는 프로토콜에 독립적이지만, 현재 가장 널리 사용되는 구현은 HTTP/1.1 프로토콜을 기반으로 한다. HTTP 메서드(GET, POST, PUT, PATCH, DELETE 등)는 자원에 대한 CRUD(생성, 조회, 수정, 삭제) 연산과 의미론적으로 매핑되며, HTTP 상태 코드는 요청 처리 결과를 나타내는 데 사용된다.

활용 RESTful 아키텍처 스타일을 준수하는 웹 서비스(API)를 RESTful API 또는 REST API라 부르며, 웹 서비스 설계, 마이크로서비스 아키텍처, 클라우드 컴퓨팅 인터페이스 등에서 표준적인 접근 방식으로 채택되고 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기