REST API

최경락 (K_ROCK_)·2021년 12월 24일
0
post-thumbnail

REST API 란?

  • Representational State Transfer 의 약어이다.
  • 웹에서 사용되는 데이터(텍스트, 이미지)를 HTTP URI를 표현하고, HTTP 프로토콜을 이용하여 요청과 응답을 정의하는 것
  • 말하자면 클라이언트가 서버의 데이터를 URI를 통해 요청하여 사용 할 수 있게하고, 서버는 그에 응답하는 것을 이야기한다.

REST 성숙도

  • REST API를 작성 할 때는 몇가지 규칙들이 있으며, 이런 규칙들 실용적으로 적용하기 위한 REST 성숙도 모델이 존재한다.
    → Richardson 이 작성해서, Richardson 성숙도 모델이라고 불린다.
  • 0에서 3단계로 총 4단계로 나누며, 모든 단계를 충족하는 경우에 REST API 라고 한다.
    → 3단계는 지키기 어렵기 때문에, 2단계까지만 지켜도 충분히 좋은 API이며, 이때는 HTTP API로 불린다.

→ 위의 사진에서 verb의 뜻은 HTTP 메소드를 의미한다.(GET, POST...)

아래의 메시지 내용의 출처는 Codestate URCLASS 입니다.

Level 0

  • 단순하게 HTTP 프로토콜만 사용해도 된다.

Level 1

  • 개별 리소스와의 통신을 준수한다.
    → 서버에서의 리소스는 특정한 데이터를 뜻하며, 위에서는 많은 의사 중에 허준과 통신하라고 구체적으로 전달 하는 것이 개별 리소스와의 통신을 한다. 라고 표현 할 수 있다.
  • 모든 리소스는 각각에 맞는 엔드포인트를 사용해야하며, 받은 자원에 대한 정보를 응답으로 전달해야한다.
  • 엔드포인트(Endpoint)란, 쉽게말해 클라이언트가 요청을 보내는 주소를 이야기한다.
  • 엔드포인트를 작성하는 경우에는 접근하고자 하는 리소스에 집중하여 명사 형태로 작성하는 것이 좋다.
    → 만약 인천공항에 예약을 위해 접근한다고 했을 때, 엔드포인트는 한국/인천/인천공항 정도가 되겠다.
  • 추가적으로 요청에 대한 응답으로 요청한 리소스에 대한 사용 실패/성공 여부함께 전달해야한다.

Level 2

  • CRUD에 맞게 적절한 HTTP 메소드(HTTP verbs)를 사용하는 것에 중점을 둔다.
  • 요청에 있어 적절한 메소드를 사용하고, 응답에 있어서도 결과에 맞게 알맞은 응답 코드를 전달해주는 것이 중요하다.
  • 또한 응답시 location 헤더를 이용하여 관련 리소스를 클라이언트가 활용 할 수 있게 해야한다.

Level 3

  • HATEOAS(Hypertext As The Engine Of Application State) 를 적용한다.
  • HATEOAS 는, 요청에 대해서 추가적으로 접근이 가능한 API의 URI를 함께 전달하는 것이라고 볼 수 있다.
  • 예를 들어 인천공항에 예약을 했고, 성공했다면 URI 를 이용하여 비행기의 정보, 비행기의 출도착시간, 경로 등등을 URI로 추가적으로 제공하는 것을 이야기한다.
  • 위와 같은 URI 들은 link에 포함되어 전달된다.

https://joomn11.tistory.com/26

  • HATEOAS 참고

+

  • 정리하자면....
    1. Level 0 - HTTP 프로토콜이면 전부 OK
    2. Level 1 - 구체적 엔드포인트 설정과 요청에 대한 응답메시지에 중점
    3. Level 2 - 올바른 HTTP 메소드의 사용과, 올바른 응답 코드, location 헤더를 이용한 리소스의 주소 전달
    4. Level 3 - HATEOAS 의 사용(link 내부에 연관된 API의 하이퍼링크를 포함하여 전달함)

0개의 댓글