일단 REST의 약자를 풀어보자
REST는 “Representational State Transfer”의 약자로,
자원(resource)의 표현(Representational)에 의한 상태 전달(State Trasfer)를 의미한다.
첫째로 자원의 표현(Representational)이란,
소프트웨어가 관리하는 모든 것(자원)에 명사형의 이름(표현)을 붙이는 것이다.
예를 들어, 데이터베이스에서 영화 정보를 관리할 때 자원의 이름을 'movies'라고 표현한다.
두 번째로 상태전달(State Transfer)이란,
자원의 상태를 json 또는 xml등의 데이터로 주고받는 것을 의미한다.
REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
REST 기반으로 서비스 API를 구현한 것
/creatMovie
/seeMovies
/getMovie/inception
/deleteMovie/inception
/updateMovie/inception
등이 될것이다.
하지만 첫번째 REST API 설계 규칙은 'URI에는 동사를 사용하지 않는다' 이다.
따라서 URI에서 동사를 다 빼준다.
/
creatMovie
/seeMovies
/getMovie/inception
/deleteMovie/inception
/updateMovie/inception
결과적으로 두개의 URI가 남게된다.
/movies
/movies/inception
URL에서 동사를 쓰는 대신에 HTTP Method(POST, GET, PUT, DELETE)를 활용해서 인터랙션 할 것이다.
GET을 이용해서 읽고,
POST를 이용해서 생성하고,
PUT을 이용해서 업데이트하고,
DELETE를 이용해서 삭제할 것이다.
/movies로 GET 요청 -> 영화 리스트를 불러옴
/movies로 POST 요청 -> 영화 생성
/movies/inception으로 GET 요청 -> 영화 '인셉션' 열람
...
이렇게 URI를 바꿀 필요없이 Methods를 바꿔서 crud를 이행할 수 있다.
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://www.youtube.com/watch?v=4DxHX95Lq2U&ab_channel=%EB%85%B8%EB%A7%88%EB%93%9C%EC%BD%94%EB%8D%94NomadCoders