본문 바로가기
Programming

초보도 이해하기 쉬운 REST API란, RESTful이란, API란

by 오뚝오뚝 2023. 2. 25.

 

REST API라는 용어가 자동매매, AWS, 증권사 API 같은 키워드를 검색하니 자주 등장하는 것을 알게되었다.

일전에 가볍게 조사해서 공부해본 적은 있는데 기억에 잘 남지 않아 이렇게 글을 쓰게 되었다.

 

REST 는 Representational State Transfer 약자로 HTTP와 관련이 있습니다. 그리고 용어를 직역하면

보여지는 상태(자원의 표현)으로 구분하여 (자원의) 상태를 전달하는 것으로 해석해 볼 수 있습니다. 

 

그러면 RESTful은 무엇이냐? 같으면서 조금은 다른 의미입니다. RESTful은 REST 라는 아키텍쳐 스타일을 구현하는 web service를 의미합니다. 즉, REST의 약속을 따르는 시스템 방식을 RESTful하다~~ 이렇게 이해하면 됩니다.

 

먼저 API라는 개념부터 시작해야 합니다.

 

API라는 것은 모두가 알고 있다 싶이 Application Programming Interface로 응용 프로그램과 다른 응용 프로그램 혹은 운영체제나 프로그래밍 언어가 제공하는 기능들을 사용할 수 있게 하는, 혹은 통신을 허용해 주는 기능과 규칙을 제공한다고 보면 되겠습니다.

 

말이 어려운데요, 그냥 "요청과 응답이라는 형태로 중재 해주는 것" 이라고 쉽게 생각하면 됩니다. 컴퓨터 프로그램간 상호작용을 가능해주는 것인거죠.

 

그리고 이러한 API라는 개념이 다시 다양한 카테고리로 분류됩니다. 하지만 일반적으로 web API로 한정하여 이야기합니다. web API라고 하면,  Open API, Internal API, Composite API 등등 우리가 일반적으로 HTTP를 사용하는 API를 의미합니다.

 

중요한 것으로는 이 요청과 응답은 통신의 한 형태로 다양한 프로토콜과 아키텍처를 사용할 수 있습니다.

 

SOAP(Simple Object Access Protocol) , RPC(Remote Procedural Call) 과 같은 용어들을 어딘가에서 우연히 보신적이 있으실 겁니다. 그리고 이러한 방식 중 하나가 REST API가 됩니다. 즉, REST API 또한 결국에 프로토콜이나 표준 같은 개념으로 이해하시면 됩니다. 다만 특이하게, 이러이렇게 약속하자가 아니라 이러이런것들을 하지 말아라 라는 제약 조건들로 갖추어집니다. 다양한 방법론이 존재하고 각각의 방법론간 다양한 장단점이 있습니다. 

 

 

REST API

 

그러면 이제 REST API라는 방법론에 대해서 이야기해 보겠습니다. 앞서 REST API는 HTTP와 관련이 있다고 말씀 드렸습니다. REST는 HTTP 프로토콜을 사용하는 아키텍쳐이기 때문입니다.

 

왜 REST API를 이야기하냐?

 

- 먼저 뛰어난 유용성과 간편함 때문입니다. HTTP 방식을 사용한다면 플랫폼과 상관없이 동일하게 사용이 가능합니다. 즉, 언어 독립적입니다. 그리고 방식의 지침이 간소화되어 있습니다. 

 

REST를 이해하기 위해서는 그 구성요소를 살펴보면 됩니다. 간단하게 3가지로 이루어져 있습니다.

(1) 자원 : HTTP URI(Uniform Resource Identifier)를 이용하여 자원을 표현

(2) 행위 : HTTP 프로토콜의 Method 행위

(3) 표현 : 응답과 결과

 

GET, POST, PUT DELETE 와 같은 HTTP의 Method로 CRUD(Create, Read, Update, Delete) Operation을 요청해 서버와 통신을 합니다. 
- GET : 자료(리소스)를 수취

- POST : 자료(리소스)를 생성

- PUT : 자료(리소스)를 업데이트

- DELETE : 자료(리소스)를 삭제

 

정보 , 즉 송수신 되는 자료/리소스의 형태는 JSON, HTML, XLT 혹은 텍스트 등 구애받지 않습니다. 이 또한 REST 만의 특징 중 하나로 SOAP 같은 경우에는 XML로 형태가 지정되어 있습니다. 하지만 REST는 엄격한 원칙을 적용받지 않고 다양한 형태로 교환이 가능합니다, 그렇기에 유연함을 갖습니다. 하지만 일반적으로 가장 많이 사용되는 형태는 이점이 높은 JSON입니다. 

 

 

위와 같이 REST 만의 특징(기준)들이 있습니다. 6가지 특징으로 가장 잘 알려져 있습니다. 

 

1. Server - Client 구조 : 딱 나누어져 있는 자원을 보유한 서버, 요청자 클라이언트 . 서로간 의존성이 줄어든 관계

2. Stateless : 요청이 분리되어 있고(즉 서버는 각각의 요청을 분리해서 인식 처리, 이에 따라 자유도가 올라감), 요청간 Client 정보 저장 없음(작업이 단순화된다)

3. Cacheable - 간소화하는 캐시 기능 (웹에서의 인프라를 그대로 사용 가능), 응답 시간이 빨라진다. 

4. Layered System - 다중 계층의 구성이 가능해져 REST API를 중간 계층으로 사용 가능

5. Uniform Interface - URI로 통일된 조작 방식, 특정 표현법 종속되지 않음.

6. Code-on-demand : 요청을 받으면 서버가 다시 클라이언트에게 코드를 보내 확장 가능한 형태

 

 

'Programming' 카테고리의 다른 글

스레드(Thread)란, CPU란, 코어(Core)란?  (0) 2022.08.11
객체지향 언어의 특징 4가지  (0) 2021.03.22
병렬과 분산컴퓨팅 소개(1)  (0) 2021.03.01

댓글