개요 목적
이번 글의 목표는 REST API에 대한 이해이다. REST API를 이해하기 위해서는 먼저 REST와 API에 대한 이해가 필요하다.
이 두 개념에 먼저 알아본 후에, 두 개념을 합치는 방식으로 REST API에 대해 이해해보자.
마지막으로는, RESTful의 의미에 대해서도 간단히 알아보자.
REST란 무엇인가
REST란, HTTP 프로토콜을 활용하여, HTTP 통신에서 서버와 클라이언트가 소통하는 방식이다.
즉 클라이언트는 서버에서 원하는 데이터가 있을 때 아래의 (REST)방식을 이용해서, 데이터를 요청한다.
- HTTP URI를 통해서 자원을 나타내고,
- HTTP Method(GET, POST, DELETE 등)을 통해서 해당 자원에 대한 CRUD Operation을 요청한다.
Create : 데이터 생성 (POST)
Read : 데이터 조회 (GET)
Update : 데이터 수정 (PUT)
Delete : 데이터 삭제 (DELETE)
예시를 통해서, URI와 Method를 활용하는 REST방식을 알아보자.
<시간 정보를 가지고 있는 서버에게서 클라이언트가 REST방식으로 시간 정보를 얻는 예시>
(기본적으로 브라우저 검색 창에 URI를 입력하는 것은 HTTP 메소드 GET(데이터 조회)를 의미한다)
시간 정보를 가지고 있는 서버(localhost:5510)와 시간을 나타내는 /time 자원 아이디를 URI로 입력하고, 메소드 GET을 서버에게 보낸 결과로, 현재 시간을 얻은 것을 볼 수 있다.
GET - localhost:5510/time 와 같은 방식으로 서버와 클라이언트가 통신하는 것을 REST라고 할 수 있다.
API란 무엇인가
REST API에서 REST를 알아보았다. 이제 나머지 구성 요소 API에 대해서 알아보자.
API사전적 의미는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 예시를 통해 아리송한 사전적 의미를 좀 더 확실하게 이해해보자.
예시 1. <기상청 서버 - API - 기상 정보를 얻고 싶은 소프트웨어>
기상정보를 가진 기상청 서버가 있다. 이 기상청 서버에서 기상 정보를 얻고 싶어하는 다양한 소프트웨어들이 있다. 방송국부터 일반 시민의 컴퓨터까지 모두 기상정보를 얻고 싶어한다. 그래서 기상청은 나에게서 정보를 소통하는 방법을 홈페이지에 작성해 놓았다. <1.원하는 날짜, 2. 원하는 기상 정보 3. 원하는 지역> 이 형식에 맞춰서 기상청 서버에게 보내면, 원하는 자료를 주겠다는 정의와 프로토콜을 알려준 것이다. 이것이 API이다.
API를 활용하여, 정보 요청 → <2021002, 미세먼지, 경기도 광명>
예시 2. <자바 언어 - API - 자바 기술을 사용하고 싶은 소프트웨어>
개발자가 자바 기능을 사용하여, 화면에 문자를 출력하고 싶어한다.
그래서 자바 기능을 이용할 수 있는 방법을 명시해 놓은 자바 API 문서를 통해서 문자를 출력하는 방법을 알아낸다.
자바가 알려준 API 프로토콜을 입력하여서, 자바의 화면 출력 기능을 사용하게 된다.
자바 내부의 복잡한 작동 원리는 알지 못하지만, 자바가 제공하는 API를 통해, 다양한 프로그래밍 기능을 사용할 수 있게 된다.
즉 API란 정의 및 프로토콜 집합을 제공하여, 두 소프트웨어 간 소통을 가능하게 하는 것이다.
REST API
앞에서 제시한 REST와 API에 대한 이해를 바탕으로 이 글의 최종 목표인 REST API의 정의를 알아보자.
REST API란 REST의 특징을 기반으로 API 프로토콜을 제공하는 것을 의미한다. 또한 REST API를 통해 요청한 데이터는 JSON형식으로 변환된 데이터를 돌려준다.
데이터를 가지고 있는 서버는 자신의 데이터와 통신하는 방법을 REST 특징을 기반으로 한 API를 제공한다.
REST API 방식을 통해서, 클라이언트는 서버의 데이터와 통신을 할 수 있게 된다.
구글 맵, 마이크로 서비스 대부분이 REST API를 제공한다.
RESTful 이란
RESTful은 REST 설계 규칙을 잘 지켜서 설계된 API를 지칭한다. 예를 들어 RESTful한 API는 보내는 주소만으로 어떤 요청을 하는 파악이 가능하다. https://school.com/class1/num25/name 을 통해서 1학년 25번의 이름을 요청한다는 것이 파악 가능하다.
반대로, 모든 CRUD 기능을 POST로 처리하는 API는 REST 셜계 규칙을 잘 지키지 못했기 때문에, RESTful 하지 못하다고 말할 수 있다.
현실적인 의미에서 REST API의미
- 데이터 처리에 대해서, HTTP 메소드를 두개 이상 사용한다.
- 데이터 조회를 담당하는 GET 메소드와, 삭제를 하는 DELETE 메소드는 메세지 바디를 담을 수 없다. 하지만 현실적으로 메세지 바디가 필요한 경우가 많아서 조회와 삭제를 담당하는 메소드로 POST를 대신 사용한다.
- 클라이언트 요청에 대한, 성공과 오류에 대한 메세지를 HTTP 상태 코드를 사용하여 소통을 한다.
- HTML과 CSS가 아닌 JSON 데이터를 주고 받는 API가 REST API이다.
Reference
https://aws.amazon.com/ko/what-is/api/
'Web Sever 개발과 CS 기초 > 네트워크 지식' 카테고리의 다른 글
URI와 URL 차이와 구조 (0) | 2022.12.19 |
---|---|
HTTP Client CP, DB외에 Connection Pool을 사용하는 곳 (0) | 2022.12.11 |
리퀘스트 메소드와 HTTP 상태 코드 (0) | 2022.08.21 |
HTTP 프로토콜 이해와 HTTP 버전 별 특징 (0) | 2022.08.14 |
OSI, TCP/IP 참조 모델 쉽게 이해하기 (0) | 2022.07.24 |