본문 바로가기

CS

REST API란?

 

REST API란?

 

REST : Representational State Transfer 의 약자로 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.

 

API : ApplicationProgrammingInterface 의 약자로 응용 프로그램 프로그래밍 인터페이스를 뜻한다. 프로그램을 작성하기 위한 일련의 부프로그램, 프로토콜 등을 정의하여 상호 작용을 하기위한 인터페이스 사양을 말한다.

 

REST API : API는 주로 프로그램 내부 단에서 이루어진다. 하지만 보다 다양한 분야에 쓰일수 있도록 '네트워크'와 '웹'에 맞춰진 API 통신 아키텍쳐가 등장했한것이 REST API이다. 주로 웹 API 쪽에서 사용된다. 웹 API = REST API 라고 봐도 볼 수있다. 현실적으로 네트워크의 99.99%는 인터넷이라부르는 HTTP 기반 네트워크 이므로 REST API라고 하면 HTTP에 쓰이는걸 의미하는 경우가 많다. 그냥 API 라고 말하면 REST API를 의미하는 경우도 많아졌다. 

 

RESTful API : REST를 잘 준수하는 API를 말한다. REST하지 않아도 RESTful API 라고 부르는 경우가 종종 있다. 엄밀히 따지면 REST 요소를 지키지 않은 HTTP API는 그냥 웹 API 혹은 HTTP API 라고 불러야한다.

 

 

[REST]

 

  • 자원(Resource) : HTTP URI (URI : Uniform Resource Identifier : 자원을 식별하기 위한 문자열의 구성)                                                                      ( ex : https://example.com/user/ABC    ' / ' 는 계층관계를 의미)
  • 행위(Verb) : HTTP Method (GET, POST, PUT, DELETE 등)
  • 표현(Representations) : HTTP Message, JSON, XML, RSS 등

 

 

REST의 특징

  • Client-Server(클라이언트-서버 구조) : 클라이언트와 서버로 분리되어야하며 서로 의존성이 없어야 한다.
  • = REST Server 는 API를 제공하고 비지니스 로직 처리 및 저장을 책임짐. Client는 사용자 인증이나 context(세션, 로그인 정보)등을 관리하고 책임짐

 

  • Stateless(무상태성) : 상태 정보를 따로 저장하지 않으며, 이용자가 누구인지 혹은 어디서 접근하는지와 관계 없이 결과가 무조건 동일해야한다. 따라서 REST API는 필연적으로 오픈될 수 밖에 없다.
  • = Client의 context를 Server에 저장하지 않음,  Server는 모든 요청을 완전히 별개의 요청으로 처리함

 

  • Cache(캐시 처리 기능) : HTTP를 비롯한 네트워크 프로토콜에서 제공하는 캐싱 기능을 적용할 수 있어야 한다.
  • = 대량의 요청을 효율적으로 처리 가능

 

  • Uniform Interface(인터페이스 일관성) : 데이터가 표준 형식으로 전송될 수 있도록 구성 요소 간 통합 인터페이스를 사용한다. REST API 태반이 HTTP를 사용하기 때문에 HTTP 표준인 URL과 응답코드, Request-Response Method 등을 사용한다.
  • = 특정 언어나 기술에 종속되지 않음

 

  • Layered System(계층 구조) : API는 REST 조건을 만족하면 필연적으로 오픈될 수 밖에 없기 때문에, 요청된 정보를 검색하는데 있어 계층 구조로 분리되어야 한다.

 

  • Self-descriptiveness(자체 표현) : API를 통해 전송되는 내용은 별도 문서 없이 쉽게 이해할 수 있도록 자체 표현 구조를 지녀야 한다. 마찬가지로 웹 표준인 JSON과 XML이 주로 사용된다.

 

[REST API]

 

REST의 특징을 기반으로한 웹 API

구글, 네이버, 카카오등 IT 회사라면 각 회사의 서비스를 활용할 수 있는 REST API를 지원한다.

 

[REST API의 특징]

각 요청이 어떤 동작이나 정보를 위한 것인지 요청 그 자체로 추론이 가능

 

[REST API의 작동 방식]

HTTP 요청을 통해 통신함으로써 리소스 내에서 레코드의 CRUD등을 수행함. (ex : GET 요청을 사용해 레코드를 검색, POST 요청으로 레코드 작성 등)

 

1. 클라이언트가 서버에 요청함. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정.

2. 서버가 클라이언트를 인증. 해당 요청을 수행할 수 있는 권한이 있는지 확인.

3. 서버가 요청을 수신. 내부적으로 처리.

4. 서버가 클라이언트에 응답을 반환. 응답에는 요청 성공여부 정보, 요청한 모든 정보 등이 포함됨.

 

[REST API 디자인 가이드]

1. URI는 정보의 자원을 표현해야 한다

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

 

[RESTful API]

RESTful 한 API는 아래 사진처럼 딱 봐도 어떠한 요청인지 이해할 수 있다.