[TIL] HTTP/네트워크 실습 feat. API

lmimoh·2022년 10월 6일
0

TIL

목록 보기
15/26

REST(Representational State Transfer) API란?

REST API는 웹에서 사용되는 리소스(Resource) 를 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청-응답을 정의하는 방식(혹은 아키텍쳐)를 의미합니다.


REST의 구성

자원(RESOURCE) - 해당 소프트웨어가 관리하는 모든 것으로, '이름'을 명명함으로써 표현한다.

행동(Verb) - HTTP METHOD, 해당 자원에 대한 행위는 오로지 METHOD를 통해 기술된다.

표현(Representations)

즉, REST 방식은 자원(RESOURCE)행동(METHOD) 을 URI의 형태를 통해 표현(Representations) 하고 해당 자원의 상태를 주고 받는 것을 의미한다.


4단계 모델을 통한 REST API 설계

REST API를 작성하기 위해서 몇가지 규칙이 존재한다.
레오나르드 리차드슨(Leonard Richardson)은 REST 방식을 잘 적용하기 위한 4단계 모들을 만들었고 다음과 같다.


0단계 : The Swamp of POX

웹의 기본 메커니즘을 이용하지 않고, HTTP 프로토콜로 요청과 응답을 주고 받는 상태

해당 상태를 POX(Plain Old XML) 이라고 부르며, 이때 HTTP 프로토콜의 메소드는 POST만을 사용한다. 해당 API를 통해 제공되는 서비스 자체가 endpoint 를 가지게 됩니다.

예시로, 피자를 주문하는 API를 작성했을 때

  • 작성중

1단계 : Resources

URI 설계 시 자원(Resources) 개념을 도입하여 개별 리소스에 대해 알맞는 엔드포인트(endpoint)를 사용하여 각각의 리소스와 통신 하는 상태

기존의 피자를 주문하는 API에서 이제 URI는 orderService 라는 하나의 서비스에 대한 엔드포인트가 아닌 /order/1, /order/2 와 같은 개별 리소스 를 이해할 수 있도록 URI를 설계한다.


2단계 : HTTP Verbs

REST의 구성 요소인 자원(Resources)과 행위(HTTP Method) 를 조합하여 사용하는 상태

이때, 자원(Resources)에 대한 행위(목적..?)는 반드시 HTTP Method를 통해 표현되어야 합니다.

기존의 피자를 주문하는 API에서 모든 요청과 응답이 POST를 통해 실행되었다면, 3단계에서는 자원에 대한 행위에 올바른 HTTP METHOD 를 통해 URI를 서술한다.

대표적인 HTTP METHOD

  • GET : 자원에 대한 요청(READ)
  • POST : 자원을 입력하기 위해(CREATE)
  • PUT : 자원을 교체하기 위해(UPDATE)
  • DELETE : 자원을 제거하기 위해(DELETE)
  • 그 외에 PATCH(자원의 수정) 등등..

이때, 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent) 하다고 하며 멱등한 METHOD를 구분하여 사용해야 한다. (POST <-> PUT)

대표적인 HTTP Status Code

  • 200 : OK
  • 201 : Created
  • 301 : Moved Permanently
  • 400 : Invalid Request
  • 401 : UnAuthorized
  • 404 : Not Found
  • 500 : Internal Server Error

3단계 : Hypermedia Controls

HATEOAS(Hypertext AS The Engine Of Application State)를 도입한 상태
여기서 HATEOAS는 API를 통한 요청의 응답 이후 이용자가 다음 단계로 가능한 작업 을 알려주는 것을 의미하며, 다음 작업을 위한 리소스의 URI를 서버에서 제공 하는 것이다.

기존의 피자를 주문하는 API에서 이용자는 해당 매장에 존재하는 재료를 조회했을 때, 해당 재료로 주문할 수 있는 피자의 종류와 실제로 주문하는 리소스의 URI를 응답으로 제공받게 된다.

이에 클라이언트는 API의 응답만으로 다음 서버 처리(요청)이 가능해지게 되고 이는 보다 효율적인 API 사용 에 도움이 된다.


Open API 란?

Open API는 누구나 사용할 수 있도록 공개된 API를 의미하며, '공공데이터'를 제공하는 다양한 API를 대표적인 예시로 들 수 있다.

그러나, Open API는 무제한으로 이용할 수 있는 것이 아니라 API마다 정해진 이용수칙이 있고 해당 수칙에 따라 제한사항(트래픽 제한 등등..)이 존재할 수 있다.

또한, 이러한 API들에 접근하기 위해서는 접근 권한을 얻어야 하고 보통 API에 접속하기 위한 API Key를 필요 로 한다.(물론, 제한 없이 제공되는 API도 존재한다.)

API Key가 존재하는 경우에는 이용자는 URI를 통해 API에 접근할 때 해당 Key를 반드시 같이 전달해야 하고, Key가 없을 시 원하는 응답을 받을 수 없다.


profile
성장하는 개발자, 이민훈입니다.

0개의 댓글