[HTTP] REST API
REST API (Representational State Transfer)
-
REST 의 개념
-
웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처.
-
자원을 자원의 표현으로 구분하여 해당 자원의 정보를 주고 받는 모든 것을 의미함.
즉, HTTP URI를 통해 자원을 명시하고,
HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것. -
확장성, 유연성, 독립성의 장점을 갖는다.
-
REST 구성요소는 자원(URI), 행위(Verb/HTTP Method), 표현으로 나눌 수 있다.
쉽게 말해, 모든 자원에 고유한 ID가 있다고 보며 이 ID는 ‘api/rater/item_id’와 같이
HTTP URI을 의미한다.클라이언트는 이 URI을 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을
Server에 요청하는 것.표현은 클라이언트가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한응답을 보내게 되는 것을 의미하며, JSON 혹은 XML을 통해 데이터를 주고받는 것이 일반적이다.
-
HTTP(Hypertext Transfer Protocol)을 사용하여 RESTful을 구현할 수 있는데, 위에서 언급한 행위인 HTTP 메서드는 리소스에 수행해야하는 작업을 서버에 알려주게 된다. 일반적으로 4가지가 있다.
GET : 서버에 데이터를 요청할 때 사용.
POST : 서버의 데이터를 새로 생성할 때 사용.
동일한 POST요청을 여러 번 전송하면 동일한 리소스를 여러 번 생성하는 부작용이 있을 수 있음.
PUT : 서버의 기존 리소스를 업데이트. 동일한 PUT 요청을 여러 번 전송해도 결과는 동일함.
DELETE : 리소스를 제거. 서버 상태를 변경할 수 있으나 클라이언트에게 적절한 인증이 없으면 요청
실패
-
-
REST의 특징
-
서버-클라이언트 구조 : 자원을 요청하는
Client와 API를 제공하고 비즈니스 로직 처리 및 저장을 책임지는Server구조이며 서로 간 의존성이 낮다. -
Stateless(무상태) : HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖는다.
Stateless ? HTTP에서 서버가 클라이언트의 상태를 보존하지 않는 것.
간단하게 말해서, 클라이언트가 서버에게 ‘저장’이라는 요청을 보냈고, 서버가 이에 응답하였다면,
응답함과 동시에 이 상태를 보존하지 않는 것.
-
-
REST API 의 정의
-
두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스.
-
REST 아키텍처 기반으로 API를 구현한 것
-
오픈 API 등이 RESTful API.
작동 과정
- 클라이언트가 서버에 요청을 전송
- 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인.
- 서버가 요청을 수신하고 내부적으로 처리
- 서버가 클라이언트에 응답을 반환
-
-
RESTful ?
-
‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 함.
즉, REST의 원리를 따르는 시스템을 칭한다.
- RESTful 하다는 것이 뭔지 항상 유념할 것 !
-