Restful API

REST(REpresentational State Transfer) 의 설계 원칙을 잘 지킨 API로, URI로 리소스를, HTTP METHOD로 행위를 표현하는 아키텍처이다.

Restful API는 아래 특성을 만족한다. Uniform Interface를 제외하고는 http 와 큰 차이가 없다.

  • Uniform Interface
  • Stateless
  • Cacheable
  • Client - Server
  • Layered System

Uniform Interface은 아래와 같은 조건을 일관되게 만족하는 것을 의미한다.

  • Identification of resources(by URI): URI를 통해 리소스를 유니크하게 식별한다.
  • manipulation of resources through represenations: 표현의 전송(http 메시지에 포함)을 통해 리소스를 조작(생성, 수정, 삭제)한다.
  • Self-descriptiveness: 메시지 그 자체로 온전히 해석 가능해야한다.
    • 서버가 변해서 메시지가 바뀌더라도, 메시지 자체로 이해 가능하다.
    • 메시지를 설명하는 별도의 명세가 필요할 수 있다.
  • HATEOAS(Hypermedia as the engine of application state): 하이퍼링크를 통해 애플리케이션 상태를 전이해야한다.
    • html에서 a 태그를 통해 전이 가능한 상태를 표현하는 것과 같이,
    • json으로 응답하더라도 전이 가능한 링크를 포함해야한다.
      • ex) DRF에서 pagination을 사용하면, Response 어트리뷰트 ’next’와 ‘previous’에 각각 링크를 담아준다.

refs