목차
- URI
- URL
- URI 설계 원칙
URI
- Uniform Resource Identifier
- 인터넷에서 특정 자원을 나타내는 주소 값으로 해당 값은 유일하며, 응답은 달라질 수 있다.
- 예를들어 https://www.yunji.com/resource/sample/1 이라고 요청했을 경우
응답은 yunji.pdf 이 될 수도 yunji.pdf.doc 가 될 수도 있다.
URL
- Uniform Resource Locator
- 인터넷 상에서의 자원. 특정 파일이 어디에 위치하는지 식별하는 주소를 뜻한다.
- 요청 : https://www.yunji.com/resource/yunji.pdf 로 요청하고 응답은 항상 해당 파일만 가능하다.
따라서 URI가 URL보다 상위개념으로 URL을 포함한 개념으로 볼 수 있다.
URI > URL
URI 설계 원칙
RFC-3986에 기반한 널리 알려진 설계 원칙이다.
1. 슬래시 (/) 는 계층 관계를 나타내는 데 사용한다.
ex) yunji.com/classes/java/curiculems
2. 마지막 문자로 슬래시(/)는 포함하지 않는다.
ex) yunji.com/classes/java/curiculems/ (X)
ex) yunji.com/classes/java/curiculems (O)
3. 하이픈(-)은 가독성을 높이는데 사용한다.
ex) yunji.com/classes/java/curiculems/web-master
4. 밑줄(_)은 사용하지 않는다.
ex) yunji.com/classes/java/curiculems/web-master (O)
ex) yunji.com/classes/java/curiculems/web_master (X)
5. 대문자는 사용하지 않는다. 소문자를 사용!
ex) yunji.com/classes/java/curiculems/web-master (O)
ex) yunji.com/classes/JAVA/curiculems/web-master (X)
6. 파일 확장자는 URI에 포함하지 않는다.
ex) yunji.com/classes/java/curiculems/web-master.jsp (X)
7. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
ex) yunji.com/classes/java/curiculems/web-master.do (X)
8. 구현에 의존적인 경로를 사용하지 않는다
ex) yunji.com/servlet/classes/java/curiculems/web-master(X)
9. 세션 ID를 포함하지 않는다.
ex) yunji.com/classes/java/curiculems/web-master?session-id=asdasd(X)
10. 프로그래밍 언어의 Method 명을 사용하지 않는다.
ex) yunji.com/classes/java/curiculems/web-master?action=intro(X)
11. 명사에 단수형보다는 복수형을 사용해야한다. (컬렉션에 대한 표현일 경우)
ex) yunji.com/classes/java/curiculums/web-master
12. 컨트롤러 이름으로는 동사나 동사구를 사용한다.
ex) yunji.com/classes/java/curiculums/web-master/re-order
13. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
ex) yunji.com/classes/java/curiculums/web-master/lessons/{lesson-id}/users/{user-id}
ex) yunji.com/classes/java/curiculums/web-master/lessons/2/users/100
14. CRUD 기능을 나타내는 것은 URI에 사용하지 않는다. (Method로 구분됨)
ex) yunji.com/classes/java/curiculums/web-master/lessons/2/READ (X)
ex) yunji.com/classes/java/curiculums/web-master/lessons/2 (O)
15. URI Query Parameter는 컬렉션 결과에 대한 필터링 용도로 사용한다. (페이징, 사이즈, 정렬 등)
ex) yunji.com/classes/java/curiculums/web-master?chapter=2&page=0&sort=asc
16. API에 있어서 서브 도메인은 일관성 있게 사용한다.
ex) api.yunji.com
ex) api-yunji.com
17. 클라이언트 개발자 포탈의 서브 도메인은 일관성 있게 사용한다.
ex) dev-yunji.com
ex) developer-yunji.com
참고
- 패스트캠퍼스 예상국 Backend Developer님 강의(Spring초격차)
'Infra > ETC' 카테고리의 다른 글
[Linux] ppk 파일을 openssh 파일(.pem)로 변경해서 사용하기 (0) | 2022.04.21 |
---|---|
[GIT] Git 계정 여러개 사용하기(Gitlab,Bitbucket,Github) (0) | 2022.04.14 |
Message Queue 란? MQ 종류 (2) | 2022.01.15 |
[Github] 일명.. 잔디심기 그래프 안 채워지는 경우 (1) | 2021.07.11 |
CORS 처리하기 !! (0) | 2021.05.01 |