Forest Gump?

REST API란? 본문

카테고리 없음

REST API란?

code1010 2021. 8. 3. 17:31

REST API 전에 먼저 API에 관련된 설명을 간략히 하겠습니다. 

API는 "Application Programming Interface"의 약자로 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 

 

한 회사에서 파일들을 제어하는 응용프로그램을 만들었을떄, 외부 사용자가 해당 소스 및 데이터 베이스에 접근하면 안되기 때문에 API를 사용하여 이를 해결해 줍니다.

 

또 프로그래밍을 할떄, 단순히 우리가 만든 API로 접근이 아닌 오픈 API를 활용해 날씨, 교통 등 다양한 데이터 정보를 얻을 수 있습니다. 이러한 API를 조합하여 설계를 하면,  우리가 원하는 컨텐츠 (EX. 모바일 앱, 웹 서비스)등을 다양하게 개발할 수 있습니다.  

 

( 사용자가 개발한 일기장 어플이 있을때 이 어플에서, 페이스북 화면에 접속하지도 않아도 글을 올릴 수 있는 페이스북 API와 , 원하는 날짜의 데이터를 불러오는 날씨 API를 조합하면 원하는 날짜 데이터를 페이스북에 올릴 수 있는 일기장 어플을 만들 수 있습니다!) 

 

REST API란? 

 

 

 

REST는 Representational State Transfer라는 용어의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처입니다. 

 

1. Uniform (유니폼 인터페이스)

  • Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

2. Stateless (무상태성)

  • 상태가 있다 없다는 의미는 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않는다는 의미한다.
  • 세션이나 쿠키등을 별도로 관리하지 않기 때문에 API서버는 요청만을 들어오는 메시지로만 처리하기 때문에 구현이 단순하다.

3. Cacheable (캐시 처리 가능)

  • REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용한다.
  • HTTP가 가진 캐싱 기능이 적용 가능하다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.

4. Self-descriptiveness (자체 표현 구조)

  • REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것

5. Client - Server Architecture (클라이언트 - 서버 구조)

  • REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임진다.
  • 클라이언트의 경우 사용자 인증이나 컨택스트(세션,로그인 정보)등을 직접 관리하고 책임진다.
  • 서로간의 의존성이 줄어들게 된다.

6. 계층형 구조

  • 클라이언트 입장에서는 REST ApI 서버만 호출한다.
  • REST 서버는 다중 계층으로 구성될 수 있다. 예를 들어 보안, 로드 밸런싱, 암호화, 사용자 인증등등 추가하여 구조상의 유연성을 줄 수 있다.

REST에 대해 조금 더 자세히 설명을 하자면 HTTP에 존재하는 모든 자원에 고유한 URI를 부여하여 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미합니다. 또한 이와 같이 REST 방식을 따른 시스템을 RESTful이라고 부릅니다.

 

REST 아키텍처는 HTTP URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원에 대한 CRUD Operational을 적용합니다. CRUD Operational 방식을 활용하여 REST 아키텍처만의 POST, GET, PUT, DELETE와 같은 메서드를 사용합니다.

URI 는 Resource를 표현해야 하는데, Resource에 대한 행위는 HTTP Method (GET, PUT, POST, DELETE등등)로 표현합니다. 

 

 

공식문서로는 , 마이크로소프트 RESTful API 가이드라인이 있으니  참고해보시는 것도 좋을 것 같습니다.  

https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md

 

REFERENCE

https://nesoy.github.io/articles/2017-02/REST