이해하기 쉽고 사용하기 쉬운 서비스 API를 제공하기 위해 REST원리에 따라 구현한 것.
REST API를 제공하는 웹서비스를 'RESTful 하다'고 할 수 있다.
근데 그 전에...
Application Programing Interface 의 약자로, 어떤 프로그램에서 사용할 수 있게 프로그래밍 언어나 데이터를 주고 받기 위한 방법/규격 (interface).
(흔히 업체쪽에서 API를 제공하지 않는다는 건 보내는 측에서 정보를 제공하지 않는다는 의미.)
Representatioal State Transfer의 약자.
자원(resource)을 그 자원의 이름(자원의 표현)으로 구분해서 그 자원의 상태를 주고 받는 모든 것을 뜻함.
자원을 명시하여 HTTP Method를 통해 그 자원을 처리하도록 설계된 것.
cf.>문서나 그림이나 데이터 등이 자원. 그리고 만약 학생 정보가 자원이면 'student'를 자원의 표현(이름)으로 정함
특징
Server-Client(서버-클라이언트 구조) ;자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client.
HTTP프로토콜이 stateless여서 REST도 무상태성.
상태정보를 따로 저장하거나 관리하지 않고 api서버는 단순히 들어오는 요청만을 처리한다는 등 많지만 제일 중요한 특징은..
"self-descriptiveness"!
RESTful API는 그 자체만으로도 API의 목적이 쉽게 이해됨
<example>
HTTP GET https://api.trueshort.com/stock/005930 `
//문서나 주석이 없이 상위 "https://api.trueshort.com 라는 API에서 삼성전자 주식에 관한 정보를 HTTP 요청을 통해 받아오는 구나" 라는 해석이 가능
<example 1>
https://api.trueshort.com/kospi/stock/005930
//KOSPI에 속해있는 주식(Stock) 중 삼성전자(005930)을 나타냄
<example 2>
https://api.shopping.com/books/novel/stephenking
// 책들중 소설 그리고 소설중 Stephen King의 소설을 나타내는 구조
주소에는 명사(해당 주체) , 동사는 메서드로. 그 자체만으로 목적이 보이게.
-가독성을 위해 URI에 _(underscore)는 주로 포함 x,
영어 대문자보다는 소문자 사용 & URI는 명사 사용
<example 3>
/books/novel/stephenking 이라고 하지 /books/novel/get-stephenking 이라고 안씀
-> 동사는 GET, POST 같은 HTTP Method를 통해 표현하기 때문.