Day +32

비트·2023년 5월 25일
0

CodeStates

목록 보기
33/54
post-thumbnail
post-custom-banner

REST API

REST API를 디자인하는 방법

  • REST API를 작성할 때는 몇 가지 지켜야 할 규칙들이 있다.
  • 앞서 이야기한 로이 필딩은 이 모델의 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장했다.
  • 그러나 실제로 엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우를 HTTP API.

REST 성숙도 모델 - 0단계

0단계 (Level 0)

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

  • 리소스 구분 없이 설계된 HTTP API.
  • 하나의 End-Point를 사용해서 HTTP Method도 반드시 POST가 된다.
  • 단순히 HTTP 프로토콜을 사용하는 것이 REST API의 출발점

REST 성숙도 모델 - 1단계

1단계 (Level 1 : Resources)

  • 리소스 개념을 도입.
  • 웹에서 사용되는 모든 데이터나 자원(Resource)을 HTTP URI로 표현한다
    • 모든 요청을 하나의 End-Point로 보내는 것이 아니라 개별 리소스와 통신.
  • HTTP Method는 GET과 POST만 사용.
  • StatusCode는 무조건 200으로 전달.

  • 앞서 0단계에서는 요청에서의 엔드포인트로 모두 /appointment를 사용하였지만, 1단계에서는 요청하는 리소스가 무엇인지에 따라 각기 다른 엔드포인트로 구분하여 사용.

  • 더불어 요청에 따른 응답으로 리소스 사용에 대한 성공 또는 실패 여부를 반환 해야 한다.

REST 성숙도 모델 - 2단계

2단계 (Level 2 : HTTP Verbs)

  • HTTP 동사를 추가.
  • 4가지의 HTTP Method를 사용해서 CRUD를 표현하고 StatusCode도 활용하여 반환.
    -현재 가장 많은 REST API가 리 단계에 해당한다고 한다.
  • 먼저 예약 가능한 시간을 확인한다는 것은 예약 가능한 시간을 조회(READ)하는 행위를 의미하고, 특정 시간에 예약한다는 것은 해당 특정 시간에 예약을 생성(CREATE)한다는 것과 같다.




  • 조회(READ)하기 위해서는 GET 메서드를 사용하여 요청
    • 이때 GET 메서드는 body를 가지지 않기 때문에 query parameter를 사용하여 필요한 리소스를 전달

  • 생성(CREATE)하기 위해서는 POST 메서드를 사용하여 요청
    • POST 요청에 대한 응답이 어떻게 반환되는지가 중요
    • 이 경우 응답은 새롭게 생성된 리소스를 보내주기 때문에, 응답 코드는 201 Created로 명확하게 작성해야 한다.
    • 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 하면 완벽하게 REST 성숙도 모델의 2단계를 충족한 것이라고 볼 수 있다.

REST 성숙도 모델 - 3단계

  • API 서비스의 모든 End-Point를 최초 진입점이 되는 URI룰 통해 Hypertext Link 형태로 제공
  • 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 한다.

  • 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 핵심 포인트
    • 특정 의사의 예약 가능 시간을 확인한 후에는 그 시간대에 예약을 할 수 있는 링크를 삽입하거나,
    • 특정 시간에 예약을 완료하고 나서는 그 예약을 다시 확인할 수 있도록 링크를 작성해 넣을 수도 있다.

profile
Drop the Bit!
post-custom-banner

0개의 댓글