REST, REST API, RESTful, RESTfultAPI

Rosa·2020년 12월 6일
0

REST

REST란

  • "Representational State Transfer"의 약자
    • 자원의 대표 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
      • 자원의 대표: 자원이란 넓은 의미로 해당 소프트웨어가 관리하는 모든 것이 될 수 있다.
      • 상태 전달: 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달하는 것을 뜻한다.
  • 자원을 이름으로 구분하고 해당 자원의 상태를 주고 받는 모든 것이 REST라고 할 수 있다.
  • REST의 좁은 의미로는 HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것이다.

REST API

REST API란

  • REST의 특징을 기반으로 API를 제공하는 것

REST의 특징

  1. Uniform Interface
    일관성있는 인터페이스로 URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일.
    HTTP 표준 프로토콜에만 따른다면 모든 플랫폼(특정 OS나 특정 언어에 종속된 것이 아닌)에서 사용이 가능하다.
  2. Client-Server
    자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트로 클라이언트-서버 구조를 갖는다.
    REST 서버는 API를 제공하고 클라이언트는 사용자 인증, 컨텍스트(세션, 로그인 정보 등)을 직접 관리한다.
    클라이언트와 서버의 역할이 구분되어 개발 내용이 명확해지고 의존성이 줄어든다.
  3. Stateless
    HTTP 프로토콜이 Stateless Protocol인 것과 마찬가지로 REST도 무상태성을 갖는다.
    클라이언트의 세션과 쿠키같은 컨텍스트를 서버에 저장하지 않으므로 서버 구현이 단순해진다.
    클라이언트의 요청을 각각 별개의 것으로 인식하며 단순 처리하게 처리만 하면 된다.
  4. Cacheable
    웹 표준을 따라 웹의 인프라를 사용할 수 있으므로 캐싱 기능을 적용할 수 있다.
    HTTP에서 사용하는 Last-Modified나 E-Tag를 사용해 구현할 수 있다.
    일반적인 서비스에서 조회 기능이 많이 사용된다는 점에서 캐싱 기능이 용량과 성능면에서 이점이 있다.
    응답시간이 빨라지고 트랜잭션이 발생하지 않아 대용량 요청을 효율적으로 처리한다.
  • 캐시 : 자주 사용하는 문서의 사본을 자동으로 보관하여 웹 요청이 캐시에 도착할 때 로컬 사본이 존재하면 문서가 서버쪽이 아닌 캐시로부터 제공된다.
  1. Layered System
    클라이언트와 서버가 분리되어 중간에 프록시 서버, 로드 밸런싱, 암호화 계층 등 중간매체를 사용해 자유도를 높일 수 있다.
    클라이언트는 API만 호출하므로 직접 통신하는 것 인지 중간 서버와 통신하는지 알 수 없다.
  2. Self-Descriptiveness
    JSON형태의 메시지를 통해 내용을 직관적으로 이해할 수 있다.
    Rest API 메시지 만으로 그 요청이 어떤 행위인지 알 수 있는 자체 표현 구조로 되어있다.

URI 설계 시 주의할 점

  1. URI는 정보의 자원을 표현해야한다.
    자원의 이름은 동사보다는 명사를 사용한다.
  2. 자원에 대한 행위는 HTTP Method로 표현한다. (GET, POST, PUT, DELETE)
  3. 슬래시(/)는 계층 관계를 나타내는데 사용한다.
  4. URI 마지막에 슬래시를 사용하지 않는다.
  5. 언더바 혹은 밑줄은 사용하지 않고, 불가피하게 긴 URI를 사용하게 될 경우 하이픈 (-)을 사용한다.
  6. URI 경로에는 소문자가 적합하고 대문자 사용을 피해야한다.
  7. 파일 확장자는 URI에 포함하지 않는다.

RESTful

REST 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어로서,'"REST API를 제공하는 웹 서비스는RESTful하다'라고 할 수 있다. 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.

RESTful API란

  • REST 아키텍처를 준수해 설계된 설계된 API
profile
기록, 메모

0개의 댓글