• REST (Representational State Transfer)

    • 필딩(Roy Fielding)이 자신의 2000년 박사 학위 논문에 정의한 웹 기반 아키텍쳐
    • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시한다.
    • HTTP Method(POST, GET, PUT, DELETE)를 통해 자원에 대하여 CRUD 작업을 수행할 수 있다.
      • CRUD: 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 가리킨다.
  • 관련 용어

    • REST API: REST 를 기반으로 만들어진 API
    • RESTful: REST API 를 활용하여 개발되는 서비스
  • 구성요소

    • 자원
      • Request 내에 기술된 개별 자원은 URI 로 식별된다.
      • REST 에서 하나의 자원을 JSON, XML 등으로 나타내며, 이를 상태(State) 또는 상태 표현(Representation)이라고 부른다.
    • 메소드
      • POST: 자원 생성 = Create
      • GET: 자원 조회 = Read
      • PUT: 자원 수정 = Update
      • DELETE: 자원 삭제 = DELETE
    • 메시지
      • 클라이언트와 서버 간에 주고받는 데이터
  • 특징

    • Server-Client 구성
    • Stateless(무상태)
      • HTTP Protocol 은 Stateless Protocol 이다.
      • 클라이언트의 Context 를 서버에 저장하지 않는다.
        • 즉, 세션과 쿠키 같은 context 정보를 신경쓰지 않아도 된다.
      • Server 는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.
        • 즉, 이전 요청이 다음 요청을 처리하는데 있어 개입하지 않도록 해야 한다.
    • Cacheable(캐시 처리 가능)
      • 대량의 요청을 효율적으로 처리할 수 있고, REST Server 트랜잭션이 발생하지 않기 때문에, 서버 자원 활용에 대한 효율성을 증진시킨다.
    • Layered System(계층화)
      • REST 서버는 다중 계층으로 구성될 수 있다.
      • 순수 비즈니스 로직을 수행하는 서버가 존재한다면, 해당 서버의 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조를 보다 유연하게 만들 수 있다.
    • Code-On-Demand(실행 코드 제공)
      • 서버로부터 스크립트를 받아서 클라이언트에서 실행한다.
      • 선택적 속성이므로 있어도 되고 없어도 되는 속성이다.
    • Uniform Interface(인터페이스 일관성)
      • URI 로 지정한 리소스에 대한 조작을, 통일되고 한정적인 인터페이스로 수행한다.
      • HTTP 표준이나 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다. (특정 언어나 기술에 종속되지 않는다.)