REST API(RESTful API)란???

haaaalin·2022년 2월 3일
0
post-thumbnail

'REST' 란?

먼저, REST 라는 용어에 대해 살펴보자. RESTREpresentational State Transfer 의 줄임말이다. World Wide Web과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처(architecture)의 한 형식이다.

그렇다면, REST APIREST 아키텍처 스타일의 디자인 원칙을 준수하는 API 라는 것..!

👀 소프트웨어 아키텍처란?
소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고, 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙

👀 API란?
애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다.
API는 따로 자세히 다뤄봐야겠다.


이건 'REST' 다

그렇다면, REST API 라고 부를 수 있으려면 어떤 기준을 따라야 할까???

1. Stateless

State, less, 상태가 없는 것을 뜻한다. 클라이언트와 서버는 서로 독립적으로 분리 되어 있어야 하고, 서버는 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.

햄버거 주문할 때를 예를 들 수 있다. 만약에 클라이언트가 서버에 "햄버거 하나 주세요" 라는 요청을 한 후, "그리고 콜라도 주세요" 라고 한다면, 서버에서는 콜라만 제공하는 것이 바로 Stateless 기준을 만족하는 것이다.
"햄버거 하나 주세요" 라고 했던 클라이언트의 상태를 저장하고 있지 않다는 의미이다.


2. Cache

클라이언트는 서버의 응답을 임시저장 할 수 있어야 한다. 클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다.

3. 계층화

서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy 등 다양한 계층(클라이언트가 볼 수 없는) 형태로 구성이 가능해야 하며, 이를 확장할 수 있어야 한다.

4. 인터페이스 일관성

  • 자원의 식별: 웹 기반의 REST 에서는 리소스 접근을 할 때 URI를 사용한다.
    https://abc.co.kr/user/100
    Resource: user
    식별자: 100

  • 메시지를 통한 리소스 조작: Web에서는 다양한 방식으로 데이터를 전달하는데, HTML, XML, JSON, TEXT 등이 있다. 이 중에서 어떠한 타입의 데이터인지를 알려주기 위해, HTTP 헤더 부분에 content-type을 통해서 데이터의 타입을 지정해 줄 수 있다. 또한 리소스 조작을 위해서 데이터 전체를 전달하지 않고, 이를 메시지로 전달한다.

  • 자기서술적 메시지: 요청하는 데이터가 어떻게 처리 되어져야 하는지 충분한 데이터를 포함할 수 있어야 한다.

  • 하이퍼미디어: 클라이언트가 리소스에 액세스한 후 하이퍼링크를 사용해 현재 수행 가능한 기타 모든 작업을 찾을 수 있어야 한다.

5. Code on Demand(선택사항)

요청을 받으면 서버에서 클라이언트로 실행 가능한 코드(자바 애플릿, 자바스크립트, 플래시 등)를 전송하여 클라이언트 기능을 확장할 수 있다.


🤔 결론

이렇게 알아본 기준들을 다 만족한 API를 RESTFul API 또는 REST API 라고 부를 수 있다. 실제 예를 들어서 같이 봤다면, 더 확실하게 이해할 수 있을 것 같다.... 아직 개념이 헷갈린다.

profile
한 걸음 한 걸음 쌓아가자😎

0개의 댓글