[블로깅] REST API

WAYPIL·2023년 3월 29일
0

코드스테이츠 부트캠프 프론트엔드 44기
Section 2 Unit 8 : [HTTP/네트워크] 실습


1. 개요

REST(Representational State Transfer) API란, 웹에서 사용되는 데이터/리소스를 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청/응답을 정의하는 방식을 말한다.


2. REST 성숙도 모델

REST API를 작성할 때는 몇 가지 지켜야 할 규칙들이 있다. REST API를 잘 적용하기 위한 4단계 모델을 REST 성숙도 모델, 혹은 리차드슨 성숙도 모델(RMM)이라고 한다.

  • [0단계] : HTTP 프로토콜 사용
  • [1단계] : 엔드포인트 활용
  • [2단계] : CRUD 준수
  • [3단계] : 길라잡이 추가

2단계까지 적용하면 대체적으로 잘 작성된 API 모델이라고 부른다. REST API의 최소 충족 기준인 3단계를 충족하지 않아 HTTP API에 속하나, 실무에서 사용하는 모범적인 API 디자인조차도 3단계까지 적용한 경우는 드물다. 현실적으로 3단계까지 지키기 어려운 고로 2단계까지만 적용해도 좋은 API 디자인이라고 쳐주기 때문이다.

그래서 3단계까지 무리해서 적용할 필요는 없으며, 2단계까지 충족한 모델도 편의상 REST API라고 부른다.


[0단계] HTTP 프로토콜 사용

0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 조건이 충족된다.


[1단계] 엔드포인트 활용

원칙적으로 웹에서 사용되는 모든 데이터/리소스를 HTTP URI로 표현하는 것이 REST API이다. 그러므로 모든 리소스는 각자의 리소스에 맞는 엔드포인트(Endpoint)를 사용해야 하며, 요청하고 받는 리소스에 대한 정보를 응답(Response)으로 전달해야 한다. 여기서 엔드포인트는 리소스 경로(path)라고 이해하면 쉬울 것이다.

어떤 리소스를 변화시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에, 적절한 엔드포인트를 작성하는 것이 중요하다.

엔드포인트 작성 시에는 동사, HTTP 메서드, 혹은 어떤 행위에 대한 단어 사용은 지양하고, 리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직하다.

마지막으로 요청에 따른 응답으로 리소스를 전달할 때, 리소스 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 한다. 예를 들어 특정 시간에 예약이 불가능할 경우 (리소스 사용에 대한) 실패 여부를 포함한 응답을 받아야 한다.


[2단계] CRUD 준수

2단계에서는 CRUD(Create, Read, Update, Delete)에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다.


[3단계] 길라잡이 추가

3단계에는 HATEOAS(Hypermedia As The Engine Of Application State)라고 하는 하이퍼미디어 컨트롤을 적용한다.

  • 요청(Request): 2단계와 동일
  • 응답(Responce): 리소스의 URI를 포함한 링크 요소(links)를 삽입

이때 링크 요소는, 응답을 받은 후에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함해야 한다.

예를 들어 요청(Request)으로 예약 가능 시간을 조회한 후에는, 그 시간대에 예약할 수 있는 링크를 응답(Responce)으로 보내줄 수 있다.

이렇듯 응답 내에 '길라잡이'를 역할을 하는 HATEOAS(하이퍼미디어 컨트롤)를 넣음으로써, 단순히 단답형으로 끝나는 불친절하고 무미건조한 API가 아닌, 새로운 기능에 쉽게+효율적으로 접근 가능하도록 하여 '편리한 API'를 구축하는 것이 3단계의 핵심이다.


Open API

오픈 API(공개 API)란, 누구나 사용할 수 있도록 공개된 API를 말한다. 반대말은 프라이빗 API(Private API).

다만 무제한으로 아무렇게나 이용할 수 있는 건 아니다. 각 API마다 정해진 이용 수칙이 존재하며, 제한사항(가격, 정보의 제한 등)이 있을 수 있기 때문이다. 대부분의 경우 데이터를 JSON 형태로 응답한다.

대표적인 오픈 API로 공공데이터 포털Open Weather Map 등이 있다. 참고로 Open Weather Map의 경우, Free Plan 기준으로 분당 60번, 월당 100번 호출이 가능하다.


API Key

API key란, API를 이용하기 위해서 필요한 일련번호를 말하며, 서버의 문을 여는 열쇠 역할을 한다. (API key가 필요 없는 경우도 있다)

생산자는 회원가입 후 로그인한 유저에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공한다. 유저는 Postman 따위로 데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있다.



<주의 사항>

이 게시물은 코드스테이츠의 블로깅 과제로 제작되었습니다.
때문에 설명이 온전치 못하거나 글의 완성도가 낮을 수 있습니다.

profile
Self-improvement Guarantees Future.

0개의 댓글