Web

좋은 URI Design의 요소들

superbono 2022. 3. 24. 18:52

* /는 계층적 관계를 나타낸다. 

슬래시(/) 는 리소스 간의 계층적 관계를 나타낸다. 

  • 예) http://localhost:8080/shapes/polygons/quadrilaterals/squares 

따라서 계층적 관계를 나타내려는 / 가 아닌 이상, / 를 포함시키지 않는다. (URI의 마지막에 /를 포함하지 않는다.)

 

 

* 가독성을 높이기 위해 하이픈(-)을 사용한다. 

  • 예) http://localhost:8080/blogs/scarlett-johansson/daily  -> "-" 을 사용, 가독성이 더 좋음
  • 예 ) http://localhost:8080/blogs/scarlettjohansson/daily   -> "-"을 사용한 위의 URI 보다 가독성이 떨어짐

 

 

* 밑줄(_)을 사용하지 않는다.

응용 프로그램의 글꼴에 따라서 밑줄이 가려질 수 있기 때문에 밑줄(_) 대신에 하이픈(-)을 사용한다.

  • 예) http://localhost:8080/blogs/scarlett_johansson/daily    (X)
  • 예) http://localhost:8080/blogs/scarlett-johansson/daily    (O)

 

 

* 되도록 소문자를 사용한다 .

RFC 3986은 URI의 대소문자를 구분하고 있기 때문에 혼동을 피하기 위해 소문자를 되도록 사용한다. 

  • 1. http://localhost/my-website/my-menu
  • 2. HTTP://LOCALHOST/my-website/my-menu
  • 3. http://localhost/MY-WEBSITE/MY-MENU

RFC 3986은 1번과 2번을 동일한 URI라고 판단하지만, 3번은 1,2번과 동일하다고 판단하지 않는다. 따라서 불필요한 혼동을 야기시킬 수 있다.

 

 

* 파일 확장자를 URI에 포함시키지 않는다. 

  •  http://localhost/my-website/my-menu/main.json (X) 
  • http://localhost/my-website/my-menu/main     (O)

URI에 파일 확장자를 포함시키는 것이 아니라, Content-Header를 통해 전달되는 미디어 유형에 따라 본문의 콘텐츠를 다루어야 한다. 

 

 

* URI는 리소스를 명시하는 것이지 리소스에 대한 행위를 명시해서는 안된다.

  •  http://localhost/user/account/reset   (X)
  •  http://localhost/user/account   (O)

위의 URI 처럼 user 의 account 라는 리소스에 대해서 reset 하겠다라는 행위를 명시해서는 안된다,

 

출처 - https://blog.restcase.com/7-rules-for-rest-api-uri-design/

 

7 Rules for REST API URI Design

By following the 7 rules for REST API URI design in the post, you will create a much cleaner REST APIs. Design for your clients, not for your data.

blog.restcase.com