REST = REspresentational State Transfer
: 웹에서 사용되는 데이터나 리소스을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
: REST API를 잘 적용하기 위한 4단계 모델
: HTTP 프로토콜을 사용한다.
: REST API는 웹에서 사용되는 모든 데이터나 리소스를 HTTP URI로 표현한다.
따라서 모든 개별 리소스에 맞는 엔드포인트(endpoint)를 사용하며, 요청하고 받는 리소스에 대한 정보를 응답으로 전달해야 한다.
endpoint - /doctors/허준
, /slot/123
ex) 김코딩 환자가 허준 의사에게 9시에 예약을 진행하였으나 해당 시간이 마감되어 예약이 불가능한 경우, 아래와 같이 리소스 사용에 대한 실패 여부를 포함한 응답을 받아야 한다.
: CRUD에 맞게 적절한 HTTP 메소드를 사용한다.
예약 가능한 시간을 확인한다. (GET 메소드)
GET 메소드는 서버의 데이터를 변화시키지 않는 요청에 사용해야 한다.
특정 시간에 예약을 생성한다. (POST 메소드)
POST 메소드는 새로운 리소스를 생성하고 생성된 리소스를 반환하므로, 응답 코드는 201 Created
로 명확하게 작성해야 하며, 관련 리소스를 클라이언트가 Location
헤더에 작성된 URI를 통해 확인할 수 있도록 해야 한다.
멱등성 (idempotent)
: 매 요청마다 같은 리소스를 반환하는 특징
POST 메소드는 요청마다 새로운 리소스를 생성하고, PUT 메소드는 요청마다 같은 리소스를 반환한다.
➡️ 멱등성을 가지는 PUT 메소드와 그렇지 않은 POST 메소드를 구분해서 사용해야 한다.
HATEOAS = Hypermedia As The Engine Of Application State
: 응답에 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다.
이때 응답에 들어가게 되는 링크 요소는 응답을 받은 다음 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고 있다.
➡️ 이렇게 응답 내에 새로운 링크를 넣어, 클라이언트 개발자들이 더 쉽고 효율적으로 리소스와 기능에 접근할 수 있도록 한다.
❔ 학습 후 궁금한 점
- 멱등성(idempotent)이란 무엇인지?
- POST / PUT / PATCH 메소드의 차이점