REST란? (Representational State Transfer)
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
-> API를 작성하는 여러 방식들 중 하나의 방식
좋은 REST API를 디자인하는 방법
로이 필딩은 REST 성숙도 모델은 총 4단계(0~3)로 나누어지며, 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장했다
실제로는 엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API디자인이라고 한다
이런 경우 HTTP API라고도 부른다
REST 성숙도 모델
- 0단계 - HTTP 사용
단순히 HTTP 프로토콜을 사용하기만 해도 된다. 하지만 REST API라고 할 수 없으며, 0단계는 좋은 REST API를 작성하기 위한 초석이다
- 1단계 - 개별 리소스와의 통신 준수
REST API는 웹에서 사용되는 모든 데이터나 리소스를 HTTP URI로 표현해야 한다
즉, 1단계에서는 개별 리소스에 맞는 엔드포인트를 사용해야 하며, 요청하고 받은 리소스에 대한 정보를 응답으로 전달해야 한다
- 2단계 - HTTP 메서드 원칙 준수
CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다 (GET, POST, PUT 등)
응답 코드 또한, 명확하게 작성해야 하며, 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 해야 한다
- 3단계 - HATEOAS (Hypertext As The Engine Of Application State)
하이퍼미디어 컨트롤을 적용한다
3단계의 요청은 2단계와 비슷하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다
즉, 응답 내에 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것
-> 클라이언트 개발자가 이 링크들을 활용하여 조금 더 쉽고, 효율적으로 리소스와 기능에 접근할 수 있다
ex) 병원의 경우 허준이라는 의사의 예약 가능 시간 확인 기능을 사용한 후에는 응답에 그 시간대에 예약을 할 수 있는 링크를 삽입하거나, 특정 시간에 예약을 완료하고 나서는 그 예약을 다시 확인할 수 있는 링크를 작성해 넣는 것
'개발일지 > 웹개발' 카테고리의 다른 글
Hashing, Salt (0) | 2022.11.22 |
---|---|
Transaction (0) | 2022.11.15 |
HTTP 요청 메서드 (0) | 2022.10.05 |
Flask 시작하기 - API 만들기 (0) | 2022.07.06 |
Flask 기초 (0) | 2022.07.06 |