진정한 의미의 REST

Android Chen·2021년 11월 21일
0
post-custom-banner

탄생배경

  • REST는 기존의 웹을 망치지 않고 HTTP의 표준 체계를 만들기 위해 로이필딩에 의해 탄생하였다.

정의

  • REST 아키텍쳐 스타일을 따르는 API를 REST API라고 하며 REST 아키텍쳐 스타일은 아래와 같은 제약조건을 만족하는 것을 의미한다.

REST 아키텍쳐 스타일

  1. client-server 서버와 클라이언트의 역할을 확실히 분리해야 하며

  2. stateless : 서버가 클라이언트의 상태 정보를 저장해서는 안되며

  3. cache : 클라이언트는 서버로부터 받을 만한 응답을 캐싱할 수 있어야 하며

  4. layerd system : 서버와 클라이언트 사이에 중간 서버가 존재하는 구조

  5. uniform interface

  6. 필수는 아니지만 code on demand : 서버에서 클라이언트로 코드를 보내면 클라이언트가 이를 실행할 수 있어야 한다.

Uniform interface

  • REST 아키텍쳐 스타일 중 uniform interface는 현재 우리가 REST API라고 부르는 것들 대부분은 지키지 않고 있다. 크게 2가지 제약을 어기고 있는데
  1. self-descriptive message : 보내진 메세지 만들 통해 모든 것을 알 수 있어야 한다.
  • 예를들어 Json형태로 API를 이용해 데이터를 주고 받는 과정에서 id, value라는 값이 있다고 치자. 이 Json파일을 전달받은 입장에서는 id가 무엇을 의미하는지, value가 무엇을 의미하는지를 정의해 놓은 문서가 존재하지 않아 스스로 의미를 해석할 수 없다.
  1. HATEOAS : 애플리케이션의 상태는 하이퍼링크를 이용해 전의되어야 한다.
  • 헤이티오스를 만족하기 위해서는 id, value값 이외에 link를 새로 추가하거나 하는 방법을 사용해서 데이터를 전송해야 한다. 하지만 오늘날 대부분의 REST API는 이러한 조건이 지켜지지 않고 있다.

@@@ 실제로 조이필딩이 이 조건들을 제대로 지키지 않은 API들을 REST API로 부르지 말아달라고 트위터와 같은 SNS에 게시한다고 한다.

profile
https://github.com/Userz1-redd
post-custom-banner

0개의 댓글