S2U8 W7D5 금요일이다!
모르고 썼던 인터넷이 이렇게나 복잡한 거였다니
이번 주말에는 책을 통해 공부해야겠다
자주 봐서 친해지자..⭐️
REST: Representational State Transfer
API: Application Programming Interface :클라이언트와 서버가 요청과 응답을 보다 잘 주고받기 위한 인터페이스
REST API
1. 웹의 데이터나 자원을 HTTP URI로 표현하고 2. HTTP프로토콜을 통해 요청과 응답을 정의하는 방식
REST API를 적절히 디자인해야 좋은 HTTP Message가 된다.
로이 필딩의 REST 방법론을 바탕으로 레오나르드 리차드슨이 REST API 성숙도 모델을 만들었다.
어느 하나만 충족하는 게 아닌, 0단계부터 차근차근 적용해야 REST API라고 할 수 있다.
HTTP를 사용한다.
개별 리소스와의 통신을 준수한다.
개별 리소스에 맞는 엔드포인트(URI)를 사용하며, 요청에 따른 응답을 알맞게 전달한다.
응답에는 사용한 리소스의 정보 && 리소스 사용에 대한 성공/실패 여부를 반환한다.
CRUD에 따른 적절한 HTTP Method를 사용한다.
HTTP Method | CRUD |
---|---|
POST | Create |
GET | Read |
PUT | Update |
PATCH | Update |
DELETE | Delete |
... |
---> PUT은 멱등하고 PATCH는 그렇지 않기 때문에 잘 구분해서 사용할 것
동일한 요청을 1번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때 멱등하다고 한다. -mdn
GET, HEAD, PUT, DELETE = 멱등성을 가지는 HTTP Method. 여러 번 호출해도 같은 응답이 나온다.
POST, PATCH= 멱등성 없음. 여러 번 호출하면 여러 번 생성한다.
but 로이 필딩은 2단계까지는 HTTP API이고 3단계까지 충족해야 진정한 REST API라고 주장한다.
하이퍼미디어 컨트롤(HATEOAS 원칙)을 적용한다.
- HATEOAS: Hypertext As The Engine Of Application State
응답에 리소스의 URI를 포함한 링크(links) 요소를 삽입하여 작성해야 한다.
이때 links 요소에 많은 하이퍼미디어 컨트롤을 포함한다.
응답에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 게 핵심 포인트
누구나 사용할 수 있는 API
정해진 이용 수칙과 제한 사항이 있을 수 있다.
API를 이용하기 위한 key
즉, 서버를 이용할 수 있는 열쇠