
Representational State Transfer의 약자이다.
자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.
즉,
1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
2. HTTP Method(POST, GET, PUT, DELETE, PATCH)를 통해
3. 해당 URI에 대한 CRUD Operation을 적용하는 것을 의미한다.
CRUD Operation이란?
CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 일컫는다.
Create : 데이터 생성 (POST)
Read : 데이터 조회 (GET)
Update : 데이터 수정 (PUT, PATCH)
Delete : 데이터 삭제 (DELETE)
REST는 다음과 같은 3가지로 구성 되어 있다.
1. 자원(Resource) : HTTP URI
2. 자원에 대한 행위 : HTTP METHOD (CRUD)
3. 자원에 대한 표현 : Representations
REST란, HTTP를 잘사용하기 위한 아키텍쳐 스타일이다.
REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현한다.
REST의 원칙을 지키면서 API의 의미를 표현하고 파악하기 쉽게 하는 것을 RESTful하다고 한다.
따라서, REST한 방식으로 데이터를 상호교환하게 설계된 API를 말한다.
HTTP를 잘 사용하기 위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메Method로 어떤 행위를 할 것인지 표현하여 설계된 API를 말한다.
RESTful API로 간주되기 위해서는 몇가지 조건이 있는데, 그 중 가장 중요한건
1. 클라이언트-서버 커뮤니케이션 : 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결 되어 있지 않는다.
2. Stateless(무상태)이다.
즉, 클라이언트와 서버 간 종속적이지 않다는 말이다.
서버는 클라이언트의 정보를 저장-유지하고 있지 않는다.
그러므로, 클라이언트가 요청 시 마다, 자기 정보를 보내야 하고, 서버는 받은 정보로 클라이언트의 정보를 확인한다.
때문에,
1. 멀티플랫폼 지원이 용이하다.
2. Stateless한 Restful API는 클라이언트의 요청(호출)을 어느 Server라도 동일하게 처리 한다.
3. 즉, 어떤 서버라도 클라이언트의 요청에 응답할 수 있다는 것은, 서버 환경이 분산되었든 아니든 클라이언트 쪽에서는 서버 쪽에 신경 쓸 필요 없이 API만 호출만 하면 원하는 결과를 얻을 수 있다는 점에서 RESTful API를 활용한다는 것이다.
꿀 팁! (면접관이 원하는 RESTful API의 장점)
RESTful API(=REST API)란,
REST한 방식으로 클라이언트와 서버 간 상호 데이터 교환을 하는 API이며, 서로 간에 stateless한 특징을 가지는 API이다. (+) Hypermedia 링크를 통해서 애플리케이션의 상태 전이가 가능해야 하고 Hypermedia에 자기 자신에 대한 정보가 담겨 있어야 진정한 REST API라고 볼 수 있다!