이전에 작성한 REST 글에서도 짤막하게 URI 디자인에 대해 언급했지만 더 자세히 알아보기 위해서 따로 작성하였다.
URI 경로 마지막은 반드시 문자여야 한다. 슬래시(/) 다음에 의미 있는 값을 추가하지 않으면 혼동이 올 수 있다.
X : http://api.canvas.com/shapes/
O : http://api.canvas.com/shapes
슬래시 문자는 리소스 간의 계층적 관계를 나타내기 위해 URI 경로에 사용된다.
ex) http://api.canvas.com/shapes/polygons/quadrilaterals/squares
URI를 사람들이 쉽게 스캔하고 해석할 수 있더로 하이픈(-) 문자를 사용하여 가독성을 높인다. 영어로 공백이나 하이픈을 사용하면 URI에서는 모두 하이픈을 사용해야 한다.
spinal-case 사용한다.
ex) http://api.example.com/rest/api/this-is-uri-design
URI에 하이퍼링크가 걸려있을 경우 종종 URI에 밑줄을 쳐서 클릭할 수 있게 시각화한다. 글꼴에 밑줄(_)문자가 밑줄로 인해 부분적으로 가려지거나 완전히 숨겨질 수 있다.
이러한 혼동을 방지하기 위해서 밑줄대신 하이픈(-)을 사용한다.
리소스를 설명할 때 동사가 아닌 구체적인 명사 사용한다.
마침표(.) 문자는 일반적으로 이름과 확장자 부분을 구분하는데 사용된다.
REST API는 메세지의 entity body 형식을 나타내기 위해 URI는 파일 확장자를 포함해서는 안 된다.
ex)
X : http://restapi.example.com/members/soccer/345/photo.jpg
O : http://restapi.example.com/members/soccer/345/photo
대신 헤더를 사용하여 본문의 컨텐츠를 처리해야 한다.
GET /members/soccer/345/photo HTTP/1.1
Host: restapi.example.com
Accept: image/jpg
Accept로 원하는 형식을 보내면, 서버가 그에 맞춰 보내준다.
ex) http://api.college.com/students/3248234/courses
http://api.college.com/students/3248234/courses/physics
REST API URI 설계를 위한 7가지 규칙
https://blog.restcase.com/7-rules-for-rest-api-uri-design