REST API란?
- REST 기반으로 서비스 API 구현한 것
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
REST 성숙도 모델
![](https://velog.velcdn.com/images/pms2259/post/27226a67-79ba-4ede-a12a-608ec12679ec/image.PNG)
REST 성숙도 모델 - 0단계
![](https://velog.velcdn.com/images/pms2259/post/07314a14-b0db-43c0-b0f5-efe0303340cc/image.PNG)
- 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다
- 0단계는 REST API를 작성하기 위한 기본 단계
- HTTP 프로토콜을 사용하는 것만으로도 REST API라고 할 수 없다
REST 성숙도 모델 - 1단계
![](https://velog.velcdn.com/images/pms2259/post/6198e707-f0c5-4f6d-8db8-9c6ba0c56147/image.PNG)
- 1단계에서는 개별 리소스(Resource)와의 통신을 준수해야 한다
- 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다
- 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 한다
REST 성숙도 모델 - 2단계
![](https://velog.velcdn.com/images/pms2259/post/80d5c7a8-0fa8-4ace-afe6-970aeeb4e087/image.PNG)
- CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다
- GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야 한다
- PUT 메서드와 PATCH 메서드도 구분하여 사용해야 합니다. PUT은 교체, PATCH는 수정의 용도로 사용
REST 성숙도 모델 - 3단계
![](https://velog.velcdn.com/images/pms2259/post/1a38792e-ed56-4b20-b1d0-7efc13e01e92/image.PNG)
- HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용
- 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야
- 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 핵심 포인트
Open API
- 누구에게나 열려있는 API
- "무제한으로 이용할 수 있다"라는 의미는 아니다
- API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한사항(가격, 정보의 제한 등)이 있을 수 있다.
API Key
- API key는 서버의 문을 여는 열쇠이다
- API Key가 필요한 경우에는 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공
-데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있다