본문 바로가기

웹개발/HTTP

REST API - RESTful 한 API란 무엇일까?

 

 

REST API란? 

REST API는 REST 아키텍처 스타일을 따르는 API이다. 

 


그렇다면 여기서 말하는 REST와 API란 무엇일까?

REST란 특정 기술이 아닌 분산 하이퍼 미디어 시스템( ex) 웹 )을 위한 아키텍처 스타일이다. REST는 HTTP가 가진 잠재력을 최대한 이용할 수 있게 유도하기 위해 만든 모범사례라고 할 수 있다. 

API란 간단히 말해 컴퓨터의 기능을 실행시키는 방법이다.

즉 REST API는 REST의 조건을 지키면서 내 컴퓨터가 아닌 다른 컴퓨터를 실행시키는 방법인 것이다. 

 

 

REST API  구성


  • 자원(Resource) - URL
  • 행위(Verb) - HTTP Method
  • 표현(Representations)

 

REST API는 크게 리소스(자원)와 행위와 표현을 규정하고 있다. 

 

  • 리소스를 식별할 때는 url를 통해 식별한다. 
  • 어떤 행위를 할 때는 Post, Get, Patch, Put, Delete 등 HTTP의 고유한 메소드를 이용한다. 
  • 결과를 알려줄 때는 응답코드를 정확하게 사용하여 알려준다. 

반면 클라이언트와 서버가 어떤 데이터 타입으로 통신할 것인지(json인지 xml인지 아니면 다른것인지) 는 규정하고 있지 않기 때문에 어떤 데이터든 주고 받을 수 있다. 

 

 

 

REST의 특징


Uniform Interface (유니폼 인터페이스): 

인터페이스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일을 말한다.

  • 리소스가 URL로 식별되어야 한다.
  • representation 전송을 통해 리소스를 조작해야 한다.
  • 메세지는 스스로를 설명해야한다. REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있어야 한다는 것이다. 
  • HATEOAS(hypermedia as the engine of application state : 애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.

Stateless (무상태성):

세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리한다.

  •  

Cacheable (캐시 가능):

HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용해 캐싱 구현이 가능하여 서버와의 상호작용을 간소화할 수 있다.

Client - Server 구조:

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 됩니다.

계층형 구조:

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.

Code-on-demand :

(선택사항) 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장하여 실행 할 수 있다. ( ex) javascript )

 

 

 

 

 

 RESTful하다는 것은?


즉 REST API는 HTTP 프로토콜을 HTTP 프로토콜 답게 사용하자라는 것(상호 운용성을 깨뜨리지 않는 것), 기계와 기계가 HTTP를 이용해서 통신할 때 리소스는 URL로 행위는 Method로 결과는 응답코드로 HTTP가 원래 가지고 있는 의미를 잘 활용하자는 것이다.  


그리고 이 조건에 맞게 잘 설계된 API를 RESTful 하다고 말 할 수 있다.  

 

 

 

 

 

 

 

 

Reference

생활코딩 REST API 강의 - https://www.youtube.com/watch?v=PmY3dWcCxXI

REST API 제대로 알고 사용하기 https://meetup.toast.com/posts/92

그런 REST API로 괜찮은가  https://www.youtube.com/watch?v=RP_f5dMoHFc

What is a REST API? https://www.redhat.com/en/topics/api/what-is-a-rest-api

 

 

 

'웹개발 > HTTP' 카테고리의 다른 글

URI - 리소스의 식별자  (0) 2021.07.10
REST 기초  (0) 2021.07.09
HTTP 쿠키  (0) 2021.01.11
HTTP  (0) 2021.01.05