본문 바로가기
내가 배운 것들/기타

REST API가 뭘까?

by Zabee52 2021. 11. 29.

REST API (Representational State Transfer API)

 

일반적인 API가 무엇인가에 대해서는 알 것이다. 근데 REST API? 앞에 REST는 왜 붙었지? 라는 의문점과 함께 인터넷에 검색을 해보면 갑자기 별나라 이야기 같은 것들이 쏟아져 나오기 시작한다..... 우리 그냥 API 쓰게 놔두면 안 돼요?

 

아래 링크는 REST API가 무엇인가를 다루는 레드햇의 문서이다. 참고바람.

 

REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법

REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻합니다. api 서버, rest api 구현 및 사용법을 설명합니다.

www.redhat.com

 

 

REST API란?

이런 건 절대 아니다.....

REST API는 사실 어떤 특별한 표준이나 프로토콜을 나타내는 단어는 아니다. 공식 정의에 따르면 일종의 API 아키텍처 원칙 세트라고 하는데 나는 잘 모르겠어서 일단 API 사용에 대한 방법론 정도로 해석을 하고 있다.

 

그러면 이 아키텍처 원칙 세트는 어떤 특징을 가지고 있는지 알아보자.

 

하단의 내용은 NHN Meet up을 참고했다.

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

 

1. 유니폼 인터페이스(Uniform Interface) : 조작은 URI로 통일한다.

2. 무상태성(Stateless) : 작업을 위한 상태 정보(세션/쿠키)를 따로 보관하지 않고, 그 때 들어오는 요청만 즉각적으로 처리한다.

3. 캐시 가능(Cacheable) : HTTP 웹 표준을 그대로 사용하기 때문에 웹의 인프라인 캐싱 기능을 사용할 수 있다.

4. 자체 표현 구조(Self-descriptiveness) : REST API만 보고도 쉽게 이해할 수 있는 구조를 가진다.

5. Client - Server 구조 : 클라이언트는 세션/쿠키 등 상태정보를 저장, Server는 단순 데이터 처리만 수행하기 때문에 둘의 작업 영역이 명확해지고 서로간의 의존성을 줄일 수 있다.

6. 계층형 구조 : REST 서버를 다중 계층으로 구성해 보안, 로드밸런싱, 암호화 계층 등을 추가해 유연한 구성이 가능해진다.

 

 

그러면, 상단의 특징들을 만족시키기 위해 REST API는 어떤 식으로 구성을 해야할까?에 대한 핵심 내용은 다음과 같다.

 

1. URI에는 정보의 자원만 표시한다.

2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 명시한다.

 

딱 하나의 예시만 들어보자면, 유저 정보를 삭제하고자 할 때,

GET (/user/delete/1) << 바람직하지 않음!
DELETE (/user/1) << 바람직함!

HTTP Method를 이용해 어떤 작업을 할 것인지 정의하고, URI를 통해 어떤 자원에 해당 작업을 적용시킬 것인지를 명시하라는 것이다. 여기에 추가적인 여러 문법 규칙들을 준수하면 그것이 바로 RESTful 하다고 볼 수 있겠다!

문법 규칙은 상단의 NHN Meet up 사이트에 잘 나와있다. 여기에 적기엔 여백이 부족해 대충 뭐시기.....

 

 

그러면 마지막으로 드는 궁금점.

그래서 API랑 REST API는 뭐가 다른데....?

REST API에 대한 내용을 보면서 API랑 크게 다른 점을 느끼진 못 했을 것이다. 그게 맞다. REST API는 그냥 REST 규칙을 준수한 일반 API다. 규칙을 잘 따르면 RESTful한 것이다. 싱거운가? 하지만 이는 매우 중요한 차이점이다. REST API에 대해서는 꼭 알아두도록 하자.

댓글