기존에 API 를 설계할 때 이렇게 얘기를 많이 하게 된다.
SY : 저희 REST 하게 설계해야 하지 않나요 ?
SY : 뭔가 RESTful 하지 않은 것 같아요.
SY : REST API 형식에 맞춰서 설계 하는게 좋을 것 같은데 ..
REST, RESTful, REST API ... 홈 ... ?
어떤게 맞는 거고, 어떻게 다른거지 ?? 라는 생각이 들게 되었다.
오늘은 해당 궁금증을 풀어보기 위해 REST, REST API, RESTful 에 대해서 알아보자.
분산 시스템 설계를 위한 아키텍처 스타일 (제약 조건의 집합)
자원 + 자원에 대한 행위 + 자원에 대한 행위의 내용
자원 : HTTP URI
- 모든 자원은 고유한 ID가 존재하고, 이 자원은 서버에 존재한다.
- 자원을 구조와 함께 나타내는 구분자
- 식별자라고 간단하게 생각할 수 있다.
자원에 대한 행위 : HTTP Method
- API 의 표현방식
자원에 대한 행위의 내용 : HTTP Message Pay Load
GET /order/#{orderId}/payment
가 있을 때 자원은 /order/#{orderId}/payment, 자원에 대한 행위는 GET가 된다.
self-descriptive 란 ?
메세지가 스스로 설명이 되어야 한다는 것
즉, 메시지의 모든 요소는 메시지만 보고 그 뜻을 알아야 한다는 것
HATEOAS 란 ?
애플리케이션의 상태는 하이퍼링크를 통해서 전이 되어야 한다.
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head></head>
<body>
<h2>잠실역</h2>
<h4><a href="/subways/1/times"></a>운행정보</h4>
<h4><a href="/subways/1/details"></a>세부정보</h4>
</body>
<html>
위의 예처럼 잠실역에 대한 정보를 하이퍼 링크를 통해서 알 수 있어야 한다.
JSON 의 경우 Header의 link 를 통해 다음 상태를 표시할 수 있다.
REST 의 원리를 따르는 API를 의미
REST API 는 개발자 사이에 정의된 규약, 형식일 뿐 반드시 이걸 사용해야한 다는 건 아니다
REST 의 원리를 따르는 시스템
REST 라는 아키텍처 스타일이 있는 거고, RESTful 은 REST 아키텍처의 원칙을 모두 만족했을 경우를 말한다. 혼용해서 사용하는 경우가 있는데 엄밀하게 따지면 다른 걸 의미한다 ❗️
REST 는 분산 시스템 설계를 위한 아키텍처 스타일
REST API 는 REST 를 기반으로 구현한 API
RESTful (API) 는 위의 제약 조건을 모두 만족하는 것
그렇기 때문에 위의 대화에서는 RESTful 이라고 얘기하는게 가장 알맞다
[네트워크] REST API란? REST, RESTful이란?
[Network] REST란? REST API란? RESTful이란?
REST API 제대로 알고 사용하기
RESTful에 대해서 설명해주세요.(REST, RESTful, RESTful API 개념 정리)
Self descriptive와 HATEOS / 대부분 못 지키고 있는 REST 제약조건