[NAVER DEVIEW 2017 그런 REST API로 괜찮은가] 정리

김성혁·2021년 2월 10일
0
post-thumbnail

"REST APIs must be hypertext-driven" -Roy Fielding-

REST API

  • REST 아키텍쳐 스타일을 따르는 API
  • REST란 분산 하이퍼미디어 시스템(ex. 웹)을 위한 아키텍쳐 스타일(제약 조건의 집합)

REST를 구성하는 스타일

  • client-server
  • stateless
  • cache
  • uniform interface
  • layered system
  • code-on-demand(optional) => 서버에서 코드를 클라이언트로 보내서 실행할 수 있어야 됨(Javascript)

Uniform Interface 의 제약조건

  • identification of resources (리소스가 uri로 식별되어야 한다)
  • manipulation of resources through representations (representation 전송을 통해서 리소스를 조직해야 한다. → HTTP 메세지에 표현을 담아서 전송을 해서 달성해야 함)
  • self-descriptive messages (메세지는 스스로를 설명해야 한다)
  • hypermedia as the engine of application state(HATEOAS) (애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다. 애플리케이션의 상태 전이)

왜 Uniform Interface?

독립적 진화

  • 서버의 기능이 변경되어도 클라이언트를 업데이트할 필요가 없다.

(ex. 서버가 새로운 api가 추가되고 기존 api가 변경, 삭제, uri가 바뀌는 변경이 있어도 클라이언트를 수정할 필요가 없어야 한다)

REST API => 한마디로 정의하자면 "하이퍼텍스트를 포함한 self-descriptive한 메세지의 uniform interface를 통해 리소스에 접근하는 API"

Self-descriptive 확장 가능한 커뮤니케이션

  • 서버나 클라이언트가 변경되더라도 오고가는 메세지는 언제나 self-descriptive하므로 언제나 해석이 가능

HATEOAS 애플리케이션 상태 전이의 late binding

  • 어디서 어디로 전이가 가능한지 미리 결정되지 않는다. 어떤 상태로 전이가 완료되고 나서야 그 다음 전이될 수 있는 상태가 결정 (링크는 동적으로 변경될 수 있다)

각 상태 코드는 제공자에 따라 다른 목적으로 클라이언트에 제공

Reference

Day1, 2-2. 그런 REST API로 괜찮은가

0개의 댓글