REST API

지은·2022년 10월 6일
1

네트워크

목록 보기
4/17

REST API

REST = REspresentational State Transfer

: 웹에서 사용되는 데이터나 리소스을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

REST API를 디자인 하는 방법

REST 성숙도 모델 (RMM)

: REST API를 잘 적용하기 위한 4단계 모델


0단계 - HTTP 사용

: HTTP 프로토콜을 사용한다.


1단계 - 개별 리소스와의 통신 준수

: REST API는 웹에서 사용되는 모든 데이터나 리소스를 HTTP URI로 표현한다.
따라서 모든 개별 리소스에 맞는 엔드포인트(endpoint)를 사용하며, 요청하고 받는 리소스에 대한 정보를 응답으로 전달해야 한다.
endpoint - /doctors/허준, /slot/123

  • 어떤 리소스를 변화시키는지, 또는 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하므로 적절한 엔드포인트를 사용하는 것이 중요하다.
  • 엔드포인트 작성 시에는 리소스에 집중해 명사 형태의 단어로 작성하는 게 좋다.
  • 또한 요청에 따른 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 한다.

ex) 김코딩 환자가 허준 의사에게 9시에 예약을 진행하였으나 해당 시간이 마감되어 예약이 불가능한 경우, 아래와 같이 리소스 사용에 대한 실패 여부를 포함한 응답을 받아야 한다.

2단계 - HTTP 메소드 원칙 준수

: CRUD에 맞게 적절한 HTTP 메소드를 사용한다.

  • Create : POST
  • Read : GET
  • Update : PUT / PATCH
  • Delete : DELETE

  • 예약 가능한 시간을 확인한다. (GET 메소드)
    GET 메소드는 서버의 데이터를 변화시키지 않는 요청에 사용해야 한다.

  • 특정 시간에 예약을 생성한다. (POST 메소드)
    POST 메소드는 새로운 리소스를 생성하고 생성된 리소스를 반환하므로, 응답 코드는 201 Created로 명확하게 작성해야 하며, 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 해야 한다.

멱등성 (idempotent)

: 매 요청마다 같은 리소스를 반환하는 특징
POST 메소드는 요청마다 새로운 리소스를 생성하고, PUT 메소드는 요청마다 같은 리소스를 반환한다.
➡️ 멱등성을 가지는 PUT 메소드와 그렇지 않은 POST 메소드를 구분해서 사용해야 한다.


3단계 - HATEOAS 원칙 준수

HATEOAS = Hypermedia As The Engine Of Application State
: 응답에 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다.
이때 응답에 들어가게 되는 링크 요소는 응답을 받은 다음 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고 있다.

  • 예약 가능한 시간을 확인한 후, 그 시간대에 예약할 수 있는 링크를 삽입한다.
  • 특정 시간에 예약을 완료한 후, 그 예약을 다시 확인할 수 있는 링크를 삽입한다.

➡️ 이렇게 응답 내에 새로운 링크를 넣어, 클라이언트 개발자들이 더 쉽고 효율적으로 리소스와 기능에 접근할 수 있도록 한다.

❔ 학습 후 궁금한 점

  • 멱등성(idempotent)이란 무엇인지?
  • POST / PUT / PATCH 메소드의 차이점
profile
개발 공부 기록 블로그

0개의 댓글