REST는 네트워크 아키텍처 원리의 모음이다.
REST API는 웹에서 사용되는 리소스를 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 하는 방식이다.
단순히 HTTP 프로토콜을 사용하는 단계로, 해당 API를 REST API라고 할 수는 없다.
REST API를 작성하기 위한 기본 단계이다.
모든 리소스는 개별 리소스에 맞는 Endpoint를 사용하고 요청해 받은 리소스에 대한 정보를 응답으로 전달한다.
Endpoint 작성시 리소스에 집중해 명사 형태의 단어로 작성한다.
CRUD에 맞게 적절한 HTTP 메서드를 사용한다.
응답 코드도 명확하게 작성하며 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 한다.
GET : 서버의 데이터를 변화시키지 않는 요청에 사용
POST: 요청마다 새로운 리소스를 생성
PUT: 요청마다 같은 리소스를 반환 (idempotent), 교체의 용도
PATCH: 요청마다 같은 리소스를 반환 (idempotent), 수정의 용도
3단계까지 적용된 API는 극히 드물다.
HATEOAS라는 하이퍼미디어 컨트롤을 적용한다.
응답에 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다.
5 basic rest api design guidelines
구글 API 디자인 가이드
Microsoft REST API Guidelines
누구에게나 열려있는 API이지만 무제한으로 이용할 수 있다는 의미는 아니다.
기관이나 API마다 정해진 이용 수칙이 있고 제한사항이 있을 수 있다.
API를 이용하기 위해서 필요한 것으로, 서버의 문을 여는 열쇠라 생각할 수 있다.
로그인된 이용자에게만 리소스에 접근할 수 있는 권한을 API key 형태로 제공하고,
데이터를 요청할 때 API key를 같이 전달해야만 원하는 응답을 받을 수 있다.