본문 바로가기

개발중/Rest Api

[ Rest API ] 독선적인 RESTful API

728x90
반응형

독선적인 RESTful API

 

REST 는 이미 나온지 18년이 지났으며 업계에서 많은 논쟁과 토론이 있었다.

이 논쟁의 중점은 HATEOAS 이다.

 

이에 대한 옹호론자도 있고 회의론자도 있다.

어떤 사람들은 강하게 '싫어함' 을 표현하기도 한다.

 


 

리처드슨의 성숙도 모델

 

2008년 레너드 리터드슨은 100가지 다양한 웹 서비스 설계를 검토한 후에 REST 를 준수하는 의미에서 서비스의 성숙도를 묘사하는 모델을 개발했다.

 

그의 모델에는 URL, HTTP, Method, 하이퍼 미디어 제약 ( HATEOAS ) 이라는 세 가지 요소가 있다.

서비스가 이러한 기술을 더 많이 채택 할 수록 다음과 같은 성숙한 사항을 고려하게 된다.

 

[ 레벨 3 ] 하이퍼 미디어 제약
[ 레벨 2 ] 각 리소스와 HTTP 메소드에 대한 URL
[ 레벨 1 ] 각 리소스에 대한 URL 과 단일 HTTP 메소드
[ 레벨 0 ] 단일 URL 과 단일 HTTP 메소드

 

레벨 0

  • 이 레벨의 서비스는 단일 URL 과 단일 HTTP 메소드 ( 일반적으로 HTTP POST ) 를 가진다.
  • 모든 메세지의 교환은 해당 HTTP 메소드를 활용하는 URL 을 통해 이루어진다.
  • 예를 들어 대부분 웹 서비스 (WS - *) 기반의 서비스는 읽기 작업이라도 단일 URL을 엔드포인트로 활용하고        HTTP POST 메소드를 사용해 SOAP 기반의 페이로드를 전송한다.
  • 또 다른 예로 XML-RPC 기반의 서비스가 있다.

 

레벨 1

  • 이 레벨의 서비스는 각 리소스에 대한 고유한 URL 을 활용하지만,                                                                         대부분은 HTTP POST 메소드인 단일 HTTP 메소드를 활용한다.
  • 이것의 예로는 널리 활용되는 API 인 Flickr 웹 서비스가 있다.
  • 이러한 서비스 중 대부분이 RESTful 이라고 주장하지만 그렇지 않다.

 

레벨 2

  • 이 레벨의 서비스는 숫자로 지정 가능한 URL 의 리소스를 제공하고 GET / POST / PUT / PATCH / DELETE 를 포함해 다양한 HTTP 메소드를 통해 노출된 리소스를 조작할 수 있도록 지원한다.
  • 이것의 좋은 예로는 Amazon 의 파일 호스팅인 서비스가 S3 가 있다.

 

레벨 3

  • 이 레벨의 서비스는 다양한 HTTP 메소드와 가장 중요한 하이퍼 미디어 제약 ( HATEOAS ) 을 활용해 URL 기반의 리소스와 작업을 제공한다.
  • 로이 필딩에 따르면 RESTful API 는 하이퍼 미디어 제약을 준수해 하이퍼텍스트를 주도로 동작하는 방식 중 하나다.
  • 이것의 좋은 예로는 페이팔의 RESTful API 가 있다.

 


 

리처드슨의 성숙도 모델은 RESTful API 의 기본 아이디어에 대한 좋은 방향을 제시한다.

 

대부분 RestAPI 는 레벨 2로 분류되는데,

주로 진정한 RESTful 을 충족해 얻는 이점이

하이퍼미디어 제약을 구현하는 오버헤드보다 가치가 없기 때문이다.

 

또는 사람들이 HATEOAS 가 가져다 주는이점에 정말로 동의하지 않는다.

 

가끔 사람들은 레벨 3 서비스를 순수 RESTful API 라고 부르는데

레벨 2 의 서비스가 되는 것에 해당 API 가 레벨 3 API 보다 열등하다는 것을 의미하지 않는다.

 

HATEOAS 를 구현할지 말지는 API 본질의 노력의 가치 여부에 달려있다.

 


 

728x90
반응형