REST 는 Representational State Transfer 의 약자로 자원의 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉, REST 란
HTTP URI 를 통해 자원 (Resource) 를 명시하고
HTTP Method (POST, GET, PUT, DELETE) 를 통해
해당 자원(URI) 에 대한 CRUD Operation 을 적용하는 것을 의미한다.
CRUD 란 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create, Read, Update, Delete 를 묶어서 일컫는 말이다.
REST 에서의 CRUD Operation 이란 다음을 말한다.
Create : 생성 (POST)
Read : 조회 (GET)
Update : 수정 (PUT)
Delete : 삭제 (DELETE)
REST 는 다음의 3가지 요소로 구성 되어 있다.
자원 (Resource) : HTTP URI
자원에 대한 행위 (Verb) : HTTP Method
자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
REST API 란 위에서 설명한 REST의 형식을 따르는 API 를 의미한다.
// BAD CASE (URI 를 대문자와 동사로 구성하였음) 🙅
https://yongho.com/Dreaming
// GOOD CASE 🙆
https://yongho.com/dream
// BAD CASE 🙅
https://yongho.com/dream/
// GOOD CASE 🙆
https://yongho.com/dream
// BAD CASE 🙅
https://yongho.com/dream_cometrue
// GOOD CASE 🙆
https://yongho.com/dream-cometrue
// BAD CASE 🙅
https://yongho.com/file.png
// GOOD CASE 🙆
https://yongho.com/file
// BAD CASE 🙅
https://yongho.com/create-post/1
// GOOD CASE 🙆
https://yongho.com/post/1
Restful 이란 REST 의 원리를 따르는 시스템을 의미한다.
주의해야할 점은 위의 6가지 주의점 중 몇 가지 Rest 방식만 따랐다고 해서 RESTful 하다고는 할 수 없다.
예를 들어 Post 라는 HTTP Method 는 CRUD 의 모든 기능이 가능한데 이 메소드 하나만으로 모든 CRUD 를 구성하는 행위는 Restful 하다고 볼 수 없다.