REST, Representational State Transfer

소프트웨어 프로그램 아키텍처의 한 형식.

자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.

기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.

개념HTTP URI를 통해 자원을 명시하고 HTTP Method (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD OPERATION을 수행하는 것을 의미한다.

왜? → Client Side를 정형화된 플랫폼(예전 only 웹)이 아닌 모바일, PC, 어플리케이 등 플랫폼에 제약 받지 않는 것을 목표로 했기 때문에 XML, Json등과 같은 클라이언트에서 바로 객체로 치환 가능한 형태의 데이터 형태를 지향하게 되면서 Server와 Client의 역할을 분리하게 되었다.

구성 →

자원, Resource : URL

행위, Verb - HTTP Method

표현, Representations

  1. 자원, URL
  2. 행위, HTTP Method
    1. HTTP 프로토콜의 GET, POST, PUT, DELETE와 같은 메서드를 이용한다.
  3. 표현, Representation of Resource
    1. Client가 자원의 상태에 대한 변경을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
    2. REST에서 하나의 자원은 JSON, XML, TEXT, RSS등 여러 형태의 Representation으로 나타낼 수 있다. 현재는 JSON을 주로 이용한다.

Untitled

특징

  1. 클라이언트 / 서버 구조
    1. 클라이언트는 유저의 관한 처리를, 서버는 REST API를 제공함으로 각가의 역할을 확실히 구분하고 일관적인 인터페이스로 분리되어 작동할 수 있다.
    2. REST Server : API를 제공, 비지니스 로직 처리 및 저장을 책임진다.
    3. Client : 사용자 인증이나 context (세션, 로그인정보) 등을 직접 관리한다.
    4. 서로간의 의존성이 줄어드는 장점이 있다.
  2. 무상태성, Stateless
    1. REST는 HTTP의 특성을 이용하기 때문에 무상태성을 갖는다.
    2. 서버에서 어떤 작업을 수행하기 위해 상태를 기억할 필요가 없고 들어온 요청에 대해 처리만 해주면 되기에 구현이 쉽고 단순해진다.
  3. 캐시 처리 가능, Cacheable
    1. HTTP라는 기존 웹표준을 사용하는 REST의 특징 덕분에 기본 웹의 인프라를 그대로 사용가능하다.
    2. 대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다.
    3. 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기에 전체 응답시간, 성능, 서버의 자원 이용률을 향상 시킬 수 있다.