REST API

waymo·2022년 8월 5일
0
post-thumbnail

REST API

🛠 REST API?

  • REST는 “Representational State Transfer”의 약자로, 로이 필딩 (Roy Fielding)의 박사학위 논문에서 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로 소개되어 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말한다.

REST성숙도 모델은 0에서 3까지 4단계로 나누어져 있다. 엄밀하게 3단계까지 지키기 어렵기때문에 2단계까지만 적용해도 좋은 API디자인이라고 볼수 있다. HTTP API



📍성숙도 모델 0단계

  • 0단계 에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다.
  • 하지만 해당 API를 REST API라고 할수는 없다.
  • 0단계는 REST API를 작성하기 위한 기본 단계이다.


📍성숙도 모델 1단계

  • REST API는 웹에서 사용되는 모든 데이터나 자원(Resource)을 HTTP URI로 표현해야하기 때문에 모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다는 것이 1단계 핵심!

  • 모델 0 단계 요청에서는 엔드포인트를 모두 /appointment로 사용했지만 1단계 에서는 요청시 /doctors/허준을 사용을 하고 특정시간에 예약 요청에서는 /slots/123으로 변경되는 리소스를 엔드포인트로 사용을 했다.
  • 예약이 실패되었을 경우에는 리소스 상용에 대한 실패 여부를 포함한 응답을 받는다.
  • 어떤 리소스를 변화 시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에, 적절한 엔드포인트를 작성하는 것이 중요하다.
  • 엔드포인트 작성 시에는 리소스에 집중하여 명사 형태의 단어로 작성하는 것이 바람직 하다.


📍성숙도 모델 2단계

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

  • 예약 생성(create)하기 위해서 POST메서드를 사용하여 요청을 하고, POST요청에 대한이 응답이 어떻게 반환되는지가 중요하다. 응답코드는 201 Created로 명확하게 작성해야 하며, 클라이언트 Location헤더에 작성된 URI를 통해 확인할수 있게 하면 완벽하게 2단계를 충족한것으로 볼 수 있다.

HTTP 메서드를 사용할 때 규칙

  • GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야 합니다.
  • POST 메서드는 요청마다 새로운 리소스를 생성하고 PUT 메서드는 요청마다 같은 리소스를 반환합니다. 이렇게 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 합니다. 그렇기 때문에 멱등성을 가지는 메서드 PUT과 그렇지 않은 메서드POST는 구분하여 사용해야 합니다.
  • PUT 메서드와 PATCH 메서드도 구분하여 사용해야 합니다. PUT은 교체, PATCH는 수정의 용도로 사용합니다.


📍성숙도 모델 3단계

  • 마지막 3단계에서는 HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용한다.
  • 요청은 2단계와 동일하지만 , 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야한다.
  • 응답내에 새로운 링크를 넣어 , 새로운 기능에 접근할수 있도록 한다.

  • 예약 가능 시간을 확인한 후에는 그시간대에 예약을 할 수 있는 삽입하거나 , 예약을 다시 확인할 수 있도록 링크를 작성해 넣을 수 있다


🌎 Open API

  • 정부는 공공데이터를 Open API 형태로 제공하고 있다.
  • Open API 글자 그대로 누구에게나 열려있는 API 이다.
  • 누구에게나 열려있지만 무제한으로 이용 할수는 없고 이용 수칙에 따라 제한사항이 걸려있다.

🔐 API Key

  • API 를 이용하기 위해서는 API key가 필요하다.
  • 서버 입장에서는 아무나에게나 함부로 데이터를 제공할수 없기 때문에 API key가 필요하다.
profile
FE 개발자(진)가 되고 싶습니다

0개의 댓글