REST API 개념정리!

박두팔이·2023년 1월 27일
0

네트워크

목록 보기
3/3

REST API?

웹 애플리케이션(web application), 줄여서 웹 앱은 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 프로그램이다.

웹 애플리케이션에서는 HTTP메서드를 이용해 서버와 통신한다. HTTP메서드의 대표적인 4가지(혹은 5)를 소개하겠다.

  1. GET : 웹 페이지나 데이터를 요청하여 조회할 수 있다.
  1. POST : 클라이언트에서 서버로 데이터를 보낸다.(= 송신한다)
  1. DELETE : 저장된 글이나 데이터를 삭제한다.
  1. PUT : URI로 지정한 서버의 파일을 치환한다. URI로 지정한 파일이 없는 경우 추가한다.

💡 클라이언트와 서버가 HTTP통신을 할 때는 제대로 된 요청과 응답을 하기위해 '규칙'이 필요하다.

이 '규칙'이 바로 REST API이다. REST API에서 REST는 “Representational State Transfer”의 약자이다. REST API는 데이터나 자원을 HTTP URI로 표현하고 HTTP프로토콜을 통해 요청과 응답을 정의하는 방식이다.

다시말해 REST API는, 클라이언트와 서버가 HTTP통신을 하기위한 설명서,메뉴판이라고 볼 수 있다.


REST API를 디자인하는 방법

REST API를 작성하기 위해서는 지켜야할 몇가지 규칙이 있다. 이것을 레오나르드 리차드슨REST성숙도 모델을 4단계로 구조화 했다.

성숙도모델에서 2단계까지만 적용해도 좋은 API디자인이라고 볼 수 있다.

REST 성숙도 모델 0단계 - HTTP사용

단순히 HTTP 프로토콜을 사용하는 것이 REST API의 출발점인 0단계 이다.

REST 성숙도 모델 1단계 - 개별 리소스와의 통신준수

REST API는 웹에서 사용되는 모든 데이터(Resource)를 HTTP URI로 표현한다. 그래서 모든 리소스는 개별 리소스에 맞는 엔드포인트를 사용해야한다. 또한 요청하고 받은 리소스에 대한 정보를 응답으로 전달해야한다는 것이 1단계에서 말하는 개별리소스와의 통신준수규칙이다.

이부분을 보면 0단계에선 모든 요청에서 엔드포인트로 /appointment를 사용했지만 1단계에서는 요청하는 리소스가 무엇인지에 따라 각각에 맞는 엔드포인트로 구분하여 사용해야한다.

⭐️ 엔드포인트 작성시!!

  • 동사, HTTP메서드, 행위에 대한 단어사용은 피한다.
  • 리소스에 집중해 명사형태의 단어로 작성하는 것이 바람직하다.

REST 성숙도 모델 2단계 - HTTP메서드 원칙준수

성숙도모델 2단계에서는 CRUD에 맞게 적절한 HTTP메서드를 사용하는 것이 중점을 둔다.

⭐️ HTTP메서드 사용규칙!!

  • GET : 서버의 데이터를 변화시키지 않는 요청에 사용한다.
  • POST : 요청마다 새로운 리소스를 생성한다.
  • PUT : 교체(치환)의 용도로 사용한다. 매 요청마다 같은 리소스를 반환한다.
  • PATCH : 수정의 용도로 사용한다.

💡 POST와 PUT을 구분해서 사용해야 한다!
POST는 요청마다 새로운 리소스를 생성하지만 PUT은 요청마다 같은 리소스를 반환한다. 이러한 특징을 멱등(idempotent)하다라고 한다. 따라서 멱등성을 가지는 PUT과 POST를 구분해서 사용해야한다.

REST 성숙도 모델 3단계 - HATEOAS 하이퍼미디어 컨트롤 적용

요청은 2단계와 동일하지만 응답은 리소스의 URI를 포함한 링크요소를 삽입하여 작성한다는 것의 차이점이 있다.


Open API? / API Key?

Open API

누구에게나 열려있는 공공API를 뜻한다. 그러나 무제한으로 이용할 수 있는 것은 아니고 이용수칙에 따라 제한사항(가격, 정보제한)이 있을 수 있다.

Open API를 간단하게 경험해 볼 수 있는 대표적인 페이지는, Open Weather Map이라는 웹 사이트에서 제공하는 날씨 API다.

  • 제한적이나마 무료로 날씨 API를 사용할 수 있다.
  • 프리 플랜에서는 기본적으로 분당 60번, 달마다 1백 번 호출이 가능하다.
  • 데이터를 JSON 형태로 응답한다.

API Key

API를 이용하기 위해서는 API Key가 필요하다. 서버의 문을 여는 열쇠라고 이해하면된다. 서버에서 응답한다는 것은 서버를 운용하는데 비용이 발생한다는 의미이기 때문에 서버에선 아무조건없이 익명의 클라이언트에게 데이터를 제공해주진 않는다.

따라서 로그인된 이용자에게만 데이터에 접근할 수 있는 권한을 API Key의 형태로 제공하고 데이터를 요청할 때 키를 같이 전달해야만 응답을 받을 수 있다.

profile
기억을 위한 기록 :>

0개의 댓글