HTTP URL 을 통해 리소스(Resource)를 명시하고
CRUD에 따른 적합한 HTTP 메서드를 적용하는 것을 의미한다.복잡한 네트워크에서 통신을 관리하기 위한 지침의 필요성에 의해 만들어 졌다.
클라이언트와 서버 간에 데이터를 주고 받기 위한 URL 규칙 으로
URL 을 기반으로 특정 리소스나 데이터를 접근하기 위한 방식으로써 URL에 어떤 데이터가 담겨 있는지 명시적으로 나타내야 한다.
너무나도 당연하지만
REST
한API
를 말한다.컴퓨터 프로그램간 데이터를 주고받기 위한 인터페이스(API)를
HTTP URL 형식의 리소스
를HTTP 메서드
를 사용해서(REST) 주고 받는 것이다.
Richardson Maturity Model 은 리차드슨(Richardson)이라는 사람이 REST API를 보다 더 실용적으로 사용하기 위해 만든 것이다.
REST 를 발표한 로이 필딩 형님은 RMM의 모든 단계를 충족해야 REST API 라고 부를 수 있다 말했지만, 3단계 까지 지키는 REST API는 만들기 어렵기 때문에 2단계 까지만 적용해도 좋은 API 디자인 이라고 볼 수 있고 이를 HTTP API 라고도 부른다.
단순히 HTTP 프로토콜을 사용하는 단계
REST API를 작성하기 위한 기본 단계라고 생각하면 된다.(출발점)0단계 까지만 작성된 API 는 REST API 라고 볼 수 없다. 그냥 API 인것 😂
리소스(Resource)를 도입해 통신을 한다.
모든 요청을 단일 서비스인엔드포인트(endpoint)
로 보내는 것이 아닌 개별 리소스마다 적합한
엔드포인트(endpoint)
를 사용해 요청을 보내야하고 해당 리소스에 대한 정보를 응답으로 전달하는 단계"리소스 마다 적절한 엔드포인트를 사용해야한다."
"요청하고 받는 자원에 대한 정보를 응답으로 전달해야 할 것"
리소스 ?
서버가 클라이언트에게 제공하는 정보로 이미지, 동영상, 텍스트 등 모든 유형의 데이터
REST API 엔드포인트 ?
API 가 서버에서 리소스에 접근할 수 있도록 가능하게 하는 URI 이다.
엔드포인트는 HTTP 메서드와 URI(리소스)를 사용하여 API가 어떠한 동작을 수행하는 API인지를 알게 해준다.메소드는 같은 URI들에 대해서도 다른 요청을 하게끔 구별해주는 항목이 있습니다. 이것을
Endpoint
라고 하는데요. 위의 표에서 ‘http://api.domain.com/books/1’ URI에 대해 ‘GET’, ‘PUT’, ‘DELETE’ 메소드에 따라 다른 요청 성격을 띄고 있는 것을 알 수 있습니다
출처
이전 단계에서는 계속 POST 메서드만을 사용했.
2단계 에서는 CRUD 에 따른 적합한 메서드를 사용하는 것이 핵심이다.
어떤 리소스 추가 하고 싶으면 --> POST
어떤 리소스 삭제 하고 싶으면 --> DELETE 등 원하는 CRUD에 맞게 HTTP 메서드를 사용하면 된다.
- HTTP 메서드 사용규칙
GET
: 서버에 데이터를 변화시키지 않는 요청에 사용 / 페이지로드 ❌
POST
: 요청마다 새로운 리소스를 생성 / 페이지로드 ⭕️
PUT
: 요청마다 같은 리소스를 반환 (교체의 용도) / 페이지로드 ⭕️
PATCH
: 요청마다 같은 리소스를 반환 (수정의 용도) / 페이지로드 ⭕️
DELETE
: 요청시 특정 리소스 삭제 / 페이지로드 ❌멱등성을 가지는 메서드
- GET , PUT , PATCH, DELETE
멱등성을 가지지 않는 메서드
- POST , PATCH
PATCH
는 상황에 따라 멱등성을 가지기도 하고 아니기도 하다..
멱등성(idempotent)?
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남는 경우를 말한다.
사실상 2단계 까지 적용시킨 REST API를 잘 작성된 API 라고 한다. 하지만 로이 필딩 형님(REST 를 정의 하신분) 은 3단계 까지 적용시켜야 REST API 라고 한다.
참으로 까다로운 형님이시다...
RMM 3단계는 HATEQAS라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용한다고 한다.
뭔 말이여 그게...
그냥 2단계와 비슷한데 응답부분이 차이가 있는 단계라고 생각하면 된다.REST API의 응답부분에 리소스의 URL을 포함한 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계이다.
RMM 피라미드 요약 🤯
0단계 : HTTP 프로토콜 사용
1단계 : 개별 리소스마다 적절한 엔드포인트 사용
2단계 : CRUD 에 따른 적절한 HTTP 메서드 사용
3단계 : 요청에 대한 응답은 리소스의 URI를 포함한 새로운 링크 요소를 삽입하여 작성
누구에게나 열려있는 API로 누구든지 사용할 수 있지만 "무제한으로 사용할 수 있다" 라는 의미는 아니다.
공공데이터 포털 를 이용하면 원하는 API를 확인할 수 있다.
API 를 이용하기 위해선 API Key 가 필요하다.
서버의 문을 여는 열쇠라고 생각하면 된다. 🔑API Key가 필요한 경우에는 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있다.
사진출처 : 코드스테이츠