[WEB] REST API란?
API(Application Programming Interface)는 애플리케이션이나 디바이스가 서로 간에 연결해 통신할 수 있는 방법을 정의하는 규칙을 말합니다.
REST는 Representationl State Transfer의 약자로 웹에 존재하는 모든 자원 이미지나 동영상 등에 고유한 URI를 부여해 활용하는 것으로 웹에서 데이터를 전송하고 처리하는 방법을 말합니다.
즉, REST API는 REST 아키텍처 스타일의 디자인 원칙을 준수하는 API를 RESTFul API라고 부르기도 합니다.
| REST는 왜 필요할까?
REST는 분산 시스템 설계를 위한 아키텍처입니다. 따라서 하나의 거대한 애플리케이션을 모듈 또는 기능 별로 분리하기 쉬워졌고 REST API를 통해 분리된 모듈끼리도 통신이 가능합니다.
또한 시간이 지나면서 기술이 발전하고 다양한 클라이언트가 등장했습니다. 단순히 HTML 또는 이미지 등을 보내는 것과는 다르게 서로 데이터를 주고 받으며 여러 클라이언트에서 해당 데이터를 적절히 가공해 보여주기만 하면 됩니다.
각기 다른 플랫폼에 맞는 서버를 둘 필요없이 하나의 서버는 각 플랫폼이 요청한 데이터만 보내주면 되기 때문에 유지보수가 뛰어난 점이 있습니다.
| REST 구성
REST는 다음 3가지 구성으로 나눌 수 있습니다.
1. 자원 (Resource) - URL
서버에 존재하는 모든 자원에는 고유한 식별자가 존재하며 자원은 URI를 통해 고유한 주소를 통해 식별할 수 있습니다.
2. 행위 (Verb) - Method
HTTP 요청 Method는 사용해 주어진 자원에 수행하길 원하는 행동을 나타내며 GET, POST, DELETE, PUT, PATCH가 있습니다.
3. 표현 (Representation)
클라이언트에서 자원을 요청하고 서버에서 요청 결과를 처리하고 응답합니다. 응답 결괴는 HTTP 헤더에 지정된 MIME 타입 중의 하나를 표현하며 JSON, XML, 이미지 등 다양한 응답이 올 수 있습니다. 요즘은 주로 Json을 사용합니다.
| REST의 특징
1. Uniform Interface(일관된 인터페이스)
자원에 대한 요청이 통일되고 한정적으로 수행하는 아키텍처 스타일을 말하며 이는 클라이언트가 무엇인지 상관없이 특정 언어나 기술에 종속받지 않는 특징을 말합니다. 이런 특징 덕에 REST API는 HTTP를 사용하는 모든 플랫폼에서 요청이 가능합니다.
2. Stateless(무상태성)
클라이언트의 상태를 저장하지 않습니다. 세션이나 쿠키를 사용해 작업을 위한 상태정보를 저장하고 관리하지 않기 때문에 서버는 요청을 단순히 처리하면 되기 때문에 자유도가 높아지고 서버에서 불필요한 자원을 관리하지 않기 때문에 서버에 대한 부담도 줄어들고 구현도 단순해집니다.
3. Cacheable(캐시 가능)
HTTP 표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 재사용할 수 있다는 점이 있습니다. 따라서 HTTP의 캐싱 기능을 적용할 수 있습니다. Last-Modified Tag나 E-Tag를 이용해 캐싱을 구현할 수 있습니다.
4. Self-descriptivenss(자체 표현)
메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어 있습니다.
5. Client-Server(클라이언트-서버 구조)
서버는 API를 제공하고 클라이언트는 사용자 인증이나 로그인 정보등을 직접 관리하는 구조로 각각의 역할을 확실히 분리해 클라이언트와 서버는 해야할 일이 명확해져 서로 간의 의존성이 줄어듭니다.
6. Layerd System(계층형 구조)
다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있습니다.
댓글남기기