Network
URI 설계 원칙(RFC-3986)
채마스
2022. 2. 27. 01:07
URL 케이스
- CamelCase
- Java 언어로 대중화되었다.
- 대소 문자로 구분하지 않는 컨텍스트에서 비효율적이다.
- snake_case
- C 프로그래머가 수년 동안 널리 사용했다.
- 언더바(_)는 컴파일러나 인터프리터가 기호로 이해할 수 있다.
- 사용할 수 없는 컨텍스트는 거의 없다.
- spinal-case
- 일부 언어에서 (변수,클래스,함수) 이름에 하이픈을 허용하지 않는다.
- lisp-case라고도 한다.
- UNIX, Linux 시스템에서 폴더 및 파일 이름을 지정하는 전통적인 방법이다.
슬래시 구분자(/)는 계층관계를 나타내는데 사용한다.
URI 마지막 문자로 (/)는 포함하지 않는다.
하이픈(-)은 URI 가독성을 높이는데 사용한다.
밑줄(_)은 사용하지 않는다.
URI경로에는 소문자가 적합하다.
- https://hyunwook-chae/SpringStart/tree/main/WEB (X)
- https://hyunwook-chae/SpringStart/tree/main/web (O)
파일확장자는 URI에 포함하지 않는다.
프로그래밍 언어에 의존적인 확장자를 사용하자 않는다.
구현에 의존적인 경로를 사용하지 않는다.
- https://github.com/servlet/classes/java/web-master (servlet -> (x))
세션ID를 포함하지 않는다.
프로그래밍 언어의 Method명을 이용하지 않는다.
명사에 단수형보다는 복수형을 사용해야 한다. 컬렉션에 대한 표현은 복수로 사용
컨트롤러 이름으로는 동사나 동사구를 사용한다.
경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
- https://hyunwook-chae/SpringStart/tree/main/web/lessons/{lesson-id}/users/{user-id}
- https://hyunwook-chae/SpringStart/tree/main/web/2/users/100
CRUD 기능을 나태내는 것은 URI에 사용하지 않는다.
- GET: https://hyunwook-chae/SpringStart/tree/main/web/lessons/2/users/100/READ (x)
- DELETE: https://hyunwook-chae/SpringStart/tree/main/web/lessons/2/users/100 (O)
URI Query Parameter 디자인
- URI 쿼리 부분으로 컬렉션 결과에 대해서 필터링 할 수 있다.
- https://hyunwook-chae/SpringStart/tree/main/web?chapter=2
- URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용한다.
- https://hyunwook-chae/SpringStart/tree/main/web?chapter=2&page=0&size=10&sort=asc