도저히 글로 된 학습 내용들로는 이해가 안되서
이것저것 유튜브 강의도 찾아보고 블로그도 찾아보면서
최대한 REST API가 무엇인지와 어떻게 활용할 수 있는지 공부해보았다.
REST API 란?
먼저 API(Aplication Programing Interface)란 클라이언트와 서버가 소통할 수 있는,
즉 컴퓨터의 기능을 실행 시킬 수 있는 명령이라고 생각하면 된다.그 중에서도 REST API란, 쉽게 말해 내 컴퓨터가 아닌 남의 컴퓨터의 기능을 실행 시킬 수 있는 명령이다. REST API는 특정 기술을 의미하는게 아니라 다루는 방식을 의미한다.
어떻게 하면 HTTP를 이용해서 API를 다룰 때 좀 더 효율적으로 다룰 수 있을까? 라는 고민의
결과물이 REST API 인 것이다.
REST 성숙도 모델 (0~3단계)
0부터 3단계까지 각 단계별로 기능이 구현되어 있는지에 따라 API의 성숙도를 정할 수 있다.
0단계 HTTP 사용
단순히 http메세지에 HTTP 프로토콜을 사용했다면 이는 0단계이다.
하지만 이는 REST API라고 말하기는 힘들고, REST API가 되기 위한 출발점이다.
1단계 개별 리소스와 통신
1단계는 요청하는 리소스가 무엇인지에 따라 각기 다른 엔드포인트(요청이 최종적으로 도달할 URI)로 구분하여 사용되어야 한다.
위의 0단계의 이미지와 비교해도 요청에서 모두
/appointment
로 사용한 반면
1단계는doctors
와slots
로 각각 원하는 응답에 맞는 요청 또는 리소스 변경을 하기 위해 각기 다른 엔드포인트를 사용한 걸 확인 할 수 있다.추가로, 1단계는 요청에 따른 응답으로 리소스를 전달할 때 사용한 리소스에 대한 정보와 함께
리소스 사용 성공/실패 여부를 반환해야한다.
2단계 HTTP 메소드 원칙
2단계는 CRUD(Create, Read, Update, Delete)를 잘 구별하여 요청 메세지 속 동사를 HTTP 메소드로 변환하여 표현할 수 있어야 한다.
2단계까지만 지켜도 REST API라고 할 수 있다.
코드로 어떻게 작성해서 사용할 수 있는지는 추가 블로깅을 통해 회고할 예정이다.
Create :
Post
Read :Get
Update :Put(교체)
,Patch(수정)
Delete:Delete
3단계 하이퍼미디어 컨트롤
3단계는 응답에서 리소스의 URI를 포함한 "링크" 요소가 삽입이 되어있는지에 대한 여부로 결정된다. 즉, HATEOAS(Hypermedia As The Engine Of Application State) - 하이퍼미디어 컨트롤이 적용되어 있어야 한다.
위 이미지 처럼 응답 안에 slots뿐만 아니라 추가적인 links가 있어 별도의 추가적인 기능을 탑재했다. 즉, 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는것이 3단계의 핵심이라고 할 수 있다.