이번 포스팅에서는 백엔드 개발자라면 숙지해야 할 필수 개념인 RESTful API에 대해 알아보자.
Application Programming Interface의 줄임말
응용 프로그램에서 사용할 수 있도록 다른 응용프로그램을 제어할 수 있게 만든 인터페이스를 말합니다.
API를 사용하면 내부 구현 로직을 알지 못해도 정의되어 있는 기능을 쉽게 사용할 수 있다.
예를 들면 네이버 지도 API, 카카오 지도 API 등등..
여기서 인터페이스(Interface)란 어떤 장치간 정보를 교환하기 위한 수단이나 방법을 의미합니다.
REST는 Representation State Transfer의 줄임말
자원(데이터)의 이름으로 구분하여 해당 자원의 상태를 교환하는 것을 의미한다.
REST는 서버와 클라이언트의 통신 방식 중 하나이다. (아키텍처에 가까운 개념)
다시 말해 HTTP URI (Uniform Resource Identifier)를 통해 자원을 명시하고 HTTP Method를 통해 자원을 교환하는것을 의미합니다.
모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
HTTP 프로토콜의 Method를 사용한다.
HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다.
Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
REST에서 하나의 자원은 JSON, XML 등 여러 형태의 Representation으로 나타내어 질 수 있다.
JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적입니다.
자원(데이터)이 있는 쪽이 Server, 요청하는 쪽이 Client을 의미한다.
또한 클라이언트와 서버가 독립적
으로 분리되어 있어야 한다.
요청 간에 클라이언트 정보가 서버에 저잗되지 않고 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.
HTTP 프로토콜을 그래도 사용하기 때문에 HTTP의 특징인 캐싱 기능을 적용하고 대량의 요청을 효율적으로 처리하기 위해 캐시를 사용한다.
요청을 받으면 서버에서 클라이언트로 코드 또는 스크립트(로직)을 전달하여 클라이언트 기능을 확장한다.
정보가 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공한다. HTTP 프로토콜을 따르는 모든 플랫폼에서 사용하게끔 설계한다.
HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 호환 가능
하다. 또한 서버와 클라이언트의 역할을 명확하게 분리
한다. 마지막으로 여러 서비스 설계에서 생길 수 있는 문제를 최소화
한다.
그래서 대체 RESTful API 이란 뭘까?
REST 아키텍처의 조건을 준수하는 어플리케이션 프로그래밍 인터페이스를 말합니다.
일반적으로 REST 아키텍처를 구현하는 웹 서비스를 RESTful 하다고 표현한다.
REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높이고 HTTP 표준을 따르고 있어 여러 프로그래밍 언어로 구현할 수 있다는 특징이 있다.
(RESTful API란)
https://aws.amazon.com/ko/what-is/restful-api