→ REST : URI 를 통해 리소스(자원)을 표시하고, HTTP Method를 통해 자원의 행위를 정하고, 그 결과를 받는다.
URI는 뷰 중심이 아닌, 정보의 자원을 표현한다.
GET /main-page (X)
GET /products (O)
GET /product_review (X)
GET /porducts/1/reviews (O)
자원에 대한 행위는 HTTP Method로 표현한다. (GET, POST, PUT, DELET)
URI에는 자원의 행위에 대한 표현이 들어가지 않는다.
GET /find/users (X)
GET /users (O)
POST /save/users (X)
POST users (O)
URI 마지막에 슬래시(/)를 사용하면 안된다.
http://api.canvas.com/shapes/ (X)
http://api.canvas.com/shpaes (O)
슬래시(/)는 계층관계를 나타내는데 사용한다.
http://api.canvas.com/shapes/polygons/quadrilaterals/squares
URI의 가독성을 위해 하이픈(-)을 사용한다.
불가피하게 긴 URI를 사용할 경우 하이픈(-)을 통해 가독성을 높여준다.
http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post
URI에 언더바(_)는 사용하지 않는다.
언더바(_) 대신 하이픈(-)을 사용할 것.
URI 경로에는 소문자가 적합하다.
scheme, host componet를 제외하고 대소문자에 따라 각각 다른 리소스로 인식하기 때문에 불필요한 혼란이 생길 수 있다.
1) http://api.example.com/my-folder/my-doc
2) HTTP://API.EXAMPLE.COM/my-folder/my-doc
// 1번, 2번은 URI와 같은 것으로 인식
3) http://api.example.com/My-Folder/my-doc
// 3번은 다른 것으로 인식 -> 불필요한 혼란 발생
URI에는 파일 확장자가 포함되지 않아야 한다.
body의 포맷을 나타내는 것은 Content-Type header의 media-type을 사용한다.
객체명이 URI에 포함된다면 가급적 복수를 사용한다.
[참고]
(http) REST API와 RESTful API
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
RESTful 하다는게 뭐야?
7 Rules for REST API URI Design - DZone
API란 무엇인가요? - API 초보자를 위한 가이드 - AWS