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
반응형
'개발중 > Rest Api' 카테고리의 다른 글
[ Rest API ] REST API 특징 (0) | 2021.12.25 |
---|---|
[ Rest API ] HATEOAS 를 써야 할까 ? (0) | 2021.12.25 |
[ Rest API ] REST 인터페이스의 제약 사항 (0) | 2021.12.23 |
[ Rest API ] REST 아키텍처의 제약 사항 (0) | 2021.12.23 |
[ Rest API ] 개요 (1) | 2021.12.23 |