HTTP란
- HyperText Transfer Protocol의 준말로 링크 기반으로 데이터를 요청하고 받겠다는 것을 의미한다.
- 클라이언트와 서버가 요청을 하고 응답을 하기 위해 따르는 프로토콜이다.
- HTML문서를 주고 받을 수 있을 뿐만 아니라, 이미지, 동영상 등을 주고 받을 수 있다.
REST API란?
REST API란 REST의 원리를 따르는 API를 의미한다. REST API를 설계하기 위해서는 몇 가지 규칙이 있다.
[REST API 설계]
1. URI는 동사보다 명사를, 대문자보다 소문자를 사용하여야 한다.
2. 마지막에 슬래시를 포함하지 않는다.
3. 언더바 대신 하이픈을 사용한다.
4. 파일확장자는 URI에 포함하지 않는다.
5. 행위를 포함하지 않는다.
[REST의 특징]
- Uniform Interface
- Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미한다. 이것은 요청을 하는 Client가 플랫폼에 무관하며, 특정 언어나 기술에 종속받지 않는 특징을 의미한다. 이러한 특징 덕분에 REST API는 HTTP를 사용하는 모든 플랫폼에서 요청가능하며 Loosely Coupling의 형태를 가진다.
- Stateless
- 서버는 각각의 요청을 별개의 것으로 인식하고 처리해야하며, 이전 요청이 다음 요청에 연관되어서는 안된다. 그래서 REST API는 세션정보나 쿠키정보를 활용하여 작업을 위한 상태정보를 저장 및 관리하지 않는다. 이러한 무상태성 때문에 REST API는 서비스의 자유도가 높으며 서버에서 불필요한 정보를 관리하지 않으므로 구현이 단순하다.
- Cacheable
- REST API는 결국 HTTP라는 기존의 웹 표준을 그대로 사용하기 때문에, 웹의 기존 인프라를 그대로 활용할 수 있다.
- Client-Server Architecture
- REST API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당한다. 서버는 API를 제공하며, 클라이언트는 사용자 인증, Context등을 직접 관리하는 역할을 확실히 구분시킴으로써 서로 간 의존성을 줄인다.
- Self-Descriptiveness
- REST API는 요청 메세지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.
- Layered System
- REST API의 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화등을 위한 계층을 추가하여 구조를 변경할 수 있다. 또한 Proxy, Gateway와 같은 네트워크 기반의 중간 매채를 사용할 수 있게 해준다. 하지만 클라이언트는 서버와 직접 통신하는지 중간 서버와 통신하는지 알 수 없다.
RESTful이란?
RESTful이란 REST의 원리를 따르는 시스템을 의미한다. 하지만 REST를 사용했다 하여 모두가 RESTful한 것은 아니다. REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 말할 수 있다. 모든 CRUD기능을 POST로 처리하는 API 또는 URI규칙을 올바르게 지키지 않은 API는 RESTful하지 못한 시스템이라고 할 수 있다.
RESTful API란?
HTTP통신에서 어떤 자원에 대한 CRUD요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식
즉, REST란 어떤 자원에 대해 CRUD연산을 수행하기 위해 URI로 요청을 보내는 것으로 Get, Post등의 방식(Method)를 사용하여 요청을 보내며 요청을 위한 자원은 특정한 형태로 표현된다. 그리고 이러한 REST기반의 API를 웹으로 구현한 것이 RESTful API이다. REST API는 Resource, Method, Representation of Resource로 구성된다.
[RESTful API의 구성 요소]
- Resource
- 서버는 유니크한 아이디를 가지는 Resource를 갖고 있으며, 클라이언트는 이러한 Resource에 요청을 보낸다. 이러한 Resource는 URI에 해당한다.
- Method
- 서버에 요청을 보내기 위한 방식으로 GET, POST, PUT, PATCH, DELETE가 있다. CRUD연산 중에서 처리를 위한 연산에 맞는 Method를 사용하여 서버에 요청을 보내야 한다.
- Representation of Resource
- 클라이언트와 서버가 데이터를 주고받는 형태로 json, xml, text등이 있다. 최근에는 Key-Value의 형태를 가진 json을 주로 사용한다.
[URI와 URL의 차이]
URL은 인터넷 상 자원의 위치를 의미한다. 자원의 위치는 결국 파일의 위치를 의미한다. 반면에 URI는 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로 URI는 URL을 포함한다.