TIL 32일차 - [HTTP/네트워크] REST API와 Open API

Yoon Kyung Park·2023년 5월 25일
0

TIL

목록 보기
32/75
  • REST API에 대해 이해할 수 있다.

    o
    API는 클라이언트가 서버에 요청을 하고, 서버가 클라이언트에 응답을 할 때, 제대로 주고 받을 수 있도록 소통을 위한 인터페이스다.

    소통을 잘 주고 받기 위해서는 클라이언트는 서버에 명확한 요청을 해야하고,
    서버는 클라이언트에 정확한 응답을 해야한다.

    그러기 위해서는 서버는 리소스를 전달하는 메뉴판 역할을 하는 API를
    잘 구축해놓아야 클라이언트가 이를 활용하여 명확한 요청을 할 수 있다.

    REST API는 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고,
    HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식으로 로이 필딩이 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로써 처음 소개되었다.

    그렇다면, 서버는 어떻게 명확하고 실용적인 API를 구출할 수 있을까?
    이를 위해 레오나르르 리처드슨은 REST API 4단계 성숙도 모델을 만들었다.

  • REST 성숙도 모델에 대해 이해할 수 있다.

    o
    REST 성숙도 모델은 REST API를
    더 실용적이게 적용하기 위해 만든 이론이다.
    이 성숙도 모델은 총 4단계이며, 0단계부터 3단계까지 있다.

    👌 0단계-HTTP를 사용
    단순히 HTTP 프로토콜을 사용하기만 해도 된다.
    이 경우를 REST API라고 할 수 없으나
    REST API를 작성하기 위한 준비, 기본 단계라고 보면 된다.

    👍 1단계-개별 리소스와의 통신 준수
    개별 리소스와의 통신을 준수해야 한다.
    모든 자원은 요청 받은 개별 리소스에 따라
    알맞은 엔드포인트(Endpoint)를 사용해야 하며,
    요청하고 받는 자원에 대한 정보와
    리소스 사용에 대한 성공/실패 여부를 응답으로 전달해야 한다.
    이때, 엔트포인트는 리소스의 특징을 나타내는 명사 형태의 단어로 작성한다.

    ✌️ 2단계-HTTP 메서드 원칙 준수
    CRUD(Create, Read, Update, Delete)에 맞게
    적절한 HTTP 메서드를 사용해야 한다.

    서버의 데이터를 변화시키지 않는 요청의 경우 👉 GET(조회) 메서드 사용
    요청마다 새로운 리소스를 생성하는 경우 👉 POST(추가) 메서드 사용
    요청마다 같은 리소스를 생성하는 경우 👉 PUT (갱신) 메서드 사용

    이때 POST 메서드와 PUT 메서드의 차이를 알아야 한다.
    둘 다 요청마다 리소스를 생성하는데 어떠한 차이가 있을까?
    POST는 요청마다 새로운 리소스를 생성한다.
    반면, PUT은 요청마다 같은 리소스를 생성한다.

    이는 멱등성의 유무에 따라 구분할 수 있다.
    멱등성이란, 매 요청마다 같은 리소스를 반환하는 특징을 말한다.
    이는 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이
    서로 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때,
    해당 HTTP 메서드가 멱등성을 가졌다고 말한다.

    메서드 중 GET, HEAD, PUT, DELETE 메서드는 멱등성을 가지며,
    POST 메서드는 그렇지 않다. 모든 안전한 메서드는 멱등성도 가진다.

    또한, PUT과 PATCH는 둘 다 갱신 메서드로 쓰이지만,
    PUT 메서드는 교체 용도로, PATCH 메서드는 수정 용도로 쓰인다.

    🤙 3단계-HATEOAS 원칙 준수
    마지막 단계인 HATEOAS는
    Hypermedia As The Engine Of Application State의 약자로
    하이퍼미디어 컨트롤을 적용한다.

    3단계의 요청은 2단계와 동일하지만,
    3단계의 응답은 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 한다.

    이렇게 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 특징이다.

  • REST API 문서를 읽을 수 있다.

    o

  • REST API에 맞춰 디자인할 수 있다.

    o
    0단계부터 3단계까지 있는 성숙도 모델은 2단계까지만 준수하여 적용해도
    좋은 API 디자인이라고 할 수 있다. 이런 경우를 HTTP API라고 한다.

  • Open API와 API Key에 대해 이해할 수 있다.

    o
    Open API는 누구에게 열려 있는(open) API를 의미한다.
    즉 누구나 쓸 수 있는 API로 정부에서 제공하는 공공데이터가 있다.

    누구나 사용할 수 있지만, 무제한으로 사용할 수 있다는 의미는 아니다.
    공공의 API 또한 재산이기 때문에
    제공되는 Open API 마다 정해진 이용 수칙이 있고,
    그 이용 수칙에 따라 가격이나 정보제한 등과 같은
    제한되는 상항이 있을 수 있다.

    간단한 Open API를 경험하고 싶으면,
    Open Weather Map 사이트에서 제공하는 날씨 APP이 있다.

    API Key는 API를 이용하기 위해 필요한 열쇠 역할을 한다.
    서버를 운용하는 데에도 비용이 발생하기 때문에
    아무 조건없이 익명의 클라이언트에게 서버의 데이터를 제공할 의무는 없다.

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

+)
REST API 직접 디자인하여 블로그에 올리기
직접 디자인한 데이터모델을 Strapi를 이용하여 구현하기


REST API 레퍼런스
구글, 마이크로소프트 같은 대기업도 REST API에 대한 가이드라인을 제시하고 있다. REST API의 모범적인 사례는 공신력 있는 가이드라인을 참고할 것.

구글 REST API 작성 가이드라인
마이크로소프트 REST API 작성 가이드라인


블로깅 과제 충족 조건 : 다음의 키워드를 포함해야 한다.

REST API ✓
REST 성숙도 모델 ✓
Open API ✓
API Key ✓


소감

🔡➡️💻➡️🤓👍

어제 오늘은 이론 중심의 학습이었다. 🔎
실습도 중요하지만, 나는 이론 중심의 학습이 나와 더 맞는 것 같다. 🤔💬
집중도 잘 되었고, 얕지만 네트워크의 원리를 알 수 있어서
신기했고, 더 깊이있게 공부하고 싶다는 생각이 들었다.

이제는 확실히 인터넷을 사용하여 사이트를 이용할 때,
한번씩 어제, 오늘 배운 내용을 생각하게 될 것 같다. 🧐💭

profile
developerpyk

0개의 댓글