REST API에 대한 간단한 개념만 알아보자.
REST API는 REST의 원칙을 준수하여 만든 API이다.
REST 는 Representational State Transfer 의 약자로 자원의 표현으로 상태를 전달하는 것을 일컫는다.
"자원" , "표현" , "상태를 전달하는 것" 하나 하나의 의미를 짚어보자.
REST API의 주요한 정보는 resource(자원)라고 한다. 여기서 말하는 resource는 일반적으로 말하는 파일, 이미지 뿐만 아니라 우리가 일반적으로 교환하는 모든 정보(데이터)를 포함합니다. 예를 들어 문서, 이미지, 일반적인 서비스, 리소스들의 집합, 객체 등이 될 수 있다.
resource를 표현하기 위한 이름이다. 예를 들자면 데이터베이스 내에 "사용자 모음"이 resource라면 "UserList"로 표현 할 수 있다.
상태(행위)에 대한 정의는 HTTP METHOD로 하는 것이 REST한 API를 설계하는 중심 규칙이다.
client(웹이나 어플리케이션 등..)가 server에 데이터를 요청하는 시점에서 CRUD 연산을 수행하여 (HTTP method로 GET, POST, DELETE, UPDATE 등의 방식을 사용) resourece가 어떤 상태인지 surver에 전달 하는것을 말한다.
자원의 표현으로 상태를 전달하는 하기 위해선 여러 제약이 있는데 모든 제약 조건들을 지킨 API를 REST API 라고 한다. HTTP 프로토콜만 잘 따라도 대부분 지킬수 있다. 하지만 대부분의 API가 두가지 제약을 지키지 않고 개발되었다.
자기서술적 메세지
하이퍼미디어(HATEOAS)
현재 HTTP API와 REST API는 사실 거의 같은 의미로 사용되고 있다. REST의 창시자 로이필딩은 "Please try to adhere to them or choose some other buzzword for your API." ("제발 제약조건을 따르던지 아니면 다른 단어를 써라") 이라고 밝힌 바가 있다.
그런데 이미 많은 사람들이 이 조건들을 지키지 않아도 REST API라고 하기 때문에 HTTP API와 같은 의미로 사용하고 있다고 한다. 하지만 위 제약 조건들을 모두 지켜야 REST API라고 말할 수 있다.
REST AIP에 대해 자세하게 설명한 https://youtu.be/RP_f5dMoHFc
<그런 REST API로 괜찮은가> 시청을 강력 추천한다.