본문 바로가기

지식/Computer Science

[지식] REST, REST API, RESTful

REST API를 알아보기 전 먼저 REST와 API의 단어에 대하여 알아보면

 

 

REST

REST는 (Representational State Trasfer)의 줄임말로 네트워크 아키텍처 원리의 모음이다.

자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다.

 

REST의 구성 요소를 설명하기 앞서 URI와 URL에 대하여 간단히 설명을 하면,

  URI(Uniform Resource Identifier)로 인터넷에 있는 자원을 나타내는 유일한 주소로 인터넷에서 요구되는 기본 조건으로 인터넷 프로토콜에 항상 붙어 다닌다.

  URL(Uniform Resource Locator)은 URI의 하위 개념으로 파일 식별자, 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약, 웹 리소스에 대한 참조 등 URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다.

 

예를 들면, https://wjddntjr555w.tistory.com?id=HTML&page=12 라는 가상의 주소가 있다면

https://wjddntjr555w.tistory.com 까지는 URL이면서 URI이고

?id=HTML&page=12 는 URI라고 할 수 있다.

 

즉 URL은 자원의 위치를 나타내며, URI는 자원의 식별자로 querystring은 자원의 위치를 나타내는 것이 아닌 식별해주고 있으므로 URI라고 할 수 있다. (예로 서버에 위치한 파일에 querystring의 값을 식별하는 것에 따라 결과가 다르게 나온다.)

 

 

REST 구성 요소

REST는 크게 세가지(Resource, Method, Message)로 구성되어 있다.

 

-Resource(자원)

REST에서 Resource라고 하면 위에서 설명한 URI이다.

 

- Method(메소드)

REST에서 Method라고 하면 HTTP Method로 크게 CRUD의 용도로 4가지를 지원한다.

 

GET = 자원 조회

POST = 자원 생성

PUT = 자원 수정

DELETE = 자원 삭제

 

- Message(메시지) = HTTP 응답 코드, Header, Body

REST에서 Message라고 하면 메시지를 처리하기 위한 정보를 응답상태코드(1xx,2xx,3xx,4xx등)와 자원의 대한 정보를 Body에 담아서 JSON,XML등 다양한 형태로 보낼수도 있고 Header에 HTTP Body에 대한 정보를 정의하는 3가지 부분으로 나눠 정보를 담아서 다시 전송하는 메시지를 말합니다.

 

REST 특징

1. 인터페이스 일관성

일관적인 인터페이스로 분리되어야 한다.

 

2. 클라이언트-서버

클라이언트와 서버로 분리되어야하며 서로 의존성이 없어야 한다. 자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트가 된다.

 

3. Cache

HTTP를 비롯한 네트워크 프로토콜에서 제공하는 캐싱 기능을 적용할 수 있어야 한다.

 

4. Stateless(무상태성)

상태 정보를 따로 저장하지 않는다. (이용자가 누구인지, 어디서 접근하는지와 관계 없이 결과가 동일)

 

5. Layered System(계층화)

클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다.

(중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.)

 

6. Code on demand (Optional)

서버로부터 스크립트를 받아서 클라이언트에서 실행한다. (*반드시 충족할 필요는 없다.)

 

 

REST 장,단점

장점

- 언어와 플랫폼이 독립적이다.

- 서버와 클라이언트 역할을 분리할 수 있게 해준다.

- HTTP 프로토콜을 그대로 사용하기 떄문에 별도의 인프라 구축이 필요 없다.

- 다른 통신방식보다 개발이 쉽고 단순하다.

 

단점

- HTTP 프로토콜만 사용이 가능하다.

- Method사용이 한정적이다.

- 표준이 없다. (보안, 정책 등에 대한 표준이 없기 때문에 관리가 어렵고 이러한 부분까지 고려해서 구현할 경우 설계나 구현이 어려워진다.)

 

 

 

 

REST API

REST API는 REST기반으로 서비스 API를 구현한 것이다.

API란 : 데이터와 기능의 집합체를 제공하여 컴퓨터 프로그램간 상호작용을 도와주며, 정보 교환이 가능하도록 하는 인터페이스

 

예를 들어 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API로 구글 맵, 공공 데이트 등), 마이크로 서비스(하나의 큰 앱을 여러 개의 작은 앱으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처)등을 제공하는 업체 대부분은 REST API를 제공한다.

 

RESTful API

REST를 잘 준수하는 API를 'RESTful API'라고 부른다.

RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.

RESTful API의 목적은 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것으로

RESTful 하지 못하다는 예시는 => CRUD기능을 모두 POST Method로 처리하는 API 이러한 경우이다.

 

 

 

참고 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

https://namu.wiki/w/REST

https://ko.wikipedia.org/wiki/REST