목차

  • 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초격차)

 

+ Recent posts