웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP프로토콜을 통해 요청과 응답을 정의하는 방식
📌REST
란?
Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
CRUD Operation
을 적용하는 것을 의미. CRUD Operation
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT)
Delete : 데이터 삭제(DELETE)
1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
Bad Example http://khj93.com/Running/
Good Example http://khj93.com/run/
2. 마지막에 슬래시 (/)를 포함하지 않는다.
Bad Example http://khj93.com/test/
Good Example http://khj93.com/test
3. 언더바 대신 하이폰을 사용한다.
Bad Example http://khj93.com/test_blog
Good Example http://khj93.com/test-blog
4. 파일확장자는 URI에 포함하지 않는다.
Bad Example http://khj93.com/photo.jpg
Good Example http://khj93.com/photo
5. 행위를 포함하지 않는다.
Bad Example http://khj93.com/delete-post/1
Good Example http://khj93.com/post/1
웹 메커니즘은 전혀 사용하지 않고 단순히 HTTP를 원격 통신을 위한 전송 시스템으로 사용한다. 이 경우에는 REST API라고 할 수 없다.
개별 리소스 와의 통신을 준수해야 함.
모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야 하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다.
엔드포인트 작성 시에는 동사, HTTP 메서드, 혹은 어떤 행위에 대한 단어 사용은 지양하고,
리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직한 방법이다.
요청에 따른 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 한다.
CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다.
앞서 0단계와 1단계 예시에서는 모든 요청을 CRUD(Create, Read, Update, Delete)와 상관없이 POST 메서드를 사용하고 있다. 그러나 REST 성숙도 모델 2단계에 따르면, 이는 CRUD에 따른 적합한 메서드를 사용한 것이 아니다.
예약 가능한 시간을 확인한다는 것 → 예약 가능한시간을 조회(READ)하는 행위 → GET
메서드로 요청.
특정 시간에 예약한다는 것 → 특정 시간에 예약을 생성(CREATE)하는 행위 → POST
메서드로 요청.
POST
POST
요청에 대한 응답은 201 Created
로 작성해야 하며 관련 리소스를 클라이언트가 Location
💡 HTTP 메서드를 사용할 때 몇가지 규칙
GET
메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야 한다.
POST
메서드는 요청마다 새로운 리소스를 생성하고 PUT
메서드는 요청마다 같은 리소스를 반환한다. 이렇게 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 한다.
그렇기 때문에 멱등성을 가지는 메서드 PUT
과 그렇지 않은 메서드POST
는 구분하여 사용해야 한다.
PUT
메서드와 PATCH
메서드도 구분하여 사용해야 한다. PUT
은 교체, PATCH
는 수정의 용도로 사용.
HATEOAS(Hypertext As The Engine Of Application State) 라는 약어로 표현되는 하이퍼 미디어 컨트롤을 적용한다. 3단계의 요청은 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 한다.
각 슬롯에는 약속 예약 방법을 알려주는 URI가 포함 된 링크 요소가 있다.
하이퍼 미디어 컨트롤의 요점은 다음에 할 수 있는 작업과 이를 수행하기 위해 조작해야하는 리소스의 URI를 알려주는 것이다.
누구나 사용할 수 있도록 공개된 API.
개발 시 들어가는 시간과 비용을 절감 할 수 있고 양질의 앱을 개발할 수 있다!
API Key
가 필요하다.
🔍API Key
가장 기초적인 방법으로 서비스 제공자가 발급해준 KEY를 통해 인증을 하는 방식이다.