- HTTP의 장점을 최대한 활용할 수 있는 아키텍처로 소개됨
- HTTP 프로토콜의 의도대로 디자인하도록 유도해줌
- REST의 기본 원칙을 지킨 서비스 디자인을 "RESTful"이라 함
REST API의 구성
- 자원, 행위, 표현으로 구성
- REST API만으로 HTTP 요청의 내용을 이해할 수 있다.
| 구성요소 | 내용 | 표현방법 | | -------- | ------------------------------ | ---------------- | | 자원 | 자원 | URI(엔드포인트) | | 행위 | 자원에 대한 행위 | HTTP 요청 메서드 | | 표현 | 자원에 대한 행위의 구체적 내용 | 페이로드 |
REST API 설계 원칙
-
URI는 리소스를 표현해야 한다.
- 리소스를 식별할 수 있는 이름은 동사보다는 명사를 사용
# bad GET /getTodos/1 GET /todos/show/1 # good GET /todos/1
-
리소스에 대한 행위는 HTTP 요청 메서드로 표현한다. HTTP 요청 메서드는 클라이언트가 서버에게 요청의 종류와 목적(리소스에 대한 행위)을 알리는 방법이다. 주로 5가지 요청 메서드를 사용하여 CRUD를 구현한다.
| HTTP 요청 메서드 | 종류 | 목적 | 페이로드 | | ---------------- | -------------- | --------------------- | -------- | | GET | index/retrieve | 모든/특정 리소스 취득 | X | | POST | create | 리소스 생성 | O | | PUT | replace | 리소스의 전체 교체 | O | | PATCH | modify | 리소스의 일부 수정 | O | | DELETE | delete | 모든/특정 리소스 삭제 | X |
# bad GET /todos/delete/1 # good DELETE /todos/1
- POST, PUT, PATCH: 요청 시에는 setRequestHeader 메서드를 사용하여 요청 몸체에 담아 서버로 전송할 페이로드의 MIME 타입을 지정해야 한다.