REST API란 REST를 기반으로 만들어진 API
REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉 REST란
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
REST는 다음과 같은 3가지로 구성이 되어있다.
자원(Resource) : HTTP URI
자원에 대한 행위(Verb) : HTTP Method
자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
: REST는 반드시 다음과 같은 스타일을 갖춰야 한다고 말합니다.
1) Client - Server (클라이언트와 서버 구조)
: REST 서버는 API를 제공, 클라이언트는 session, 정보들을 직접 관리하는 구조
2) Stateless (무상태성)
: REST는 상태 정보를 따로 저장,관리하지 않는다(Stateless). 세션이나 쿠키 정보를 별도로 저장,관리하지 않으므로 API서버는 들어오는 requset만 단순 처리하면 된다
3) Cache (캐시 가능)
: REST의 가장 큰! 특징은 HTTP라는 기존의 웹 표준을 그대로 따른다는 것이다.곧, 기존의 웹 자원들을 그대로 활용할 수 있다. 따라서 HTTP가 가진 캐싱(임시 저장) 기능이 적용가능.
4) Uniform Interface(유니폼 인터페이스)
: 유니폼 인터페이스는 URI로 지정한 Resource(자원)에 대한 조작을 통일하고 한정적인 인터페이스로 수행하는 아키텍터 스타일
5) Layered System
: REST 서버는 다중 계층으로 구성될 수 있다.
6) Self-descriptiveness (자체 표현 구조)
: REST는 또한 REST API 내용만 보고도 별도 문서 없이 쉽게 이해할 수 있다.
위 사항들을 지키지 않는 Restful하지 않은 API들은 webApi 혹은 http Api라고 부른다.
GET
자원을 받아오기만 할때 사용한다.
어떠한 방식으로도 자원의 상태를 변경시키지 않으므로, safe method라고 불리기도 한다.
GET API는 멱등성의 띈다. 멱등성이란, 동일한 API를 여러번 호출시에도 동일한 결과를 얻을 수 있음을 의미한다.(POST, PUT을 통해 데이터가 변경되지 않는다면)
POST
새로운 자원을 추가할 때 사용한다.
이는 서버의 상태를 변경시키며, 때문에 비멱등성 성질을 가진다. 응답 코드로 201(Created)를 받아야 정상적으로 서버에 추가 되었음을 확인할 수 있다.
PUT
존재하는 자원을 변경 할 때 사용한다.
만약 자원이 존재하지 않는 경우, API는 새로운 자원을 생성하도록 할 수 있다. 이 경우 응답코드는 201(Created)를 받게 된다.
존재하는 자원을 변경시킨 경우 200(OK) 또는 204(No Content) 응답코드를 받게 된다.
DELETE
자원을 삭제할 때 사용한다.
DELETE 메소드는 멱등성 성질을 띈다. DELETE 메소드를 요청하면 자원을 삭제하게 되는데, 반복적으로 DELETE를 호출한 경우 결과는 바뀌지 않는다. 하지만 이미 제거되었으므로404(NOT FOUND)를 반환받는다.
PATCH
한 자원의 데이터를 부분적으로 변경할 때 사용한다.
PUT도 마찬가지로 자원을 변경할 수 있다. 하지만 조금더 명확하게는 존재하는 자원에 대해 부분적으로 업데이트를 위해서는 PATCH를 사용한다. PUT은 자원을 완전히 대체하는 경우 사용한다.