DevGang

[WEB] URI 본문

Study/WEB

[WEB] URI

별천랑 2021. 2. 17. 16:51

- URI (Uniform Resource Identifier)

  • 인터넷에서 특정 자원을 나타내는 주소 값. 해당 값은 유일합니다.
  • ex : https://www.foo.co.kr/resource/sample/1
  • response : sample1.pdf, smaple2.pdf, smaple.doc

- URL (Uniform Resource Locator)

  • 인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소
  • ex : https://www.foo.co.kr/sample1.pdf
  • URL는 URI의 하위 개념

- URI 설계 원칙 (RFC-3986)

1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다. 

  • https://foo.co.kr/vehicles/suv/q6

2. URI 마지막 문자로 ( / )는 포함하지 않는다.

  • https://foo.co.kr/vehicles/suv/q6/

3. 하이폰(-)은 URI가독성을 높이는 데 사용한다.

  • https://foo.co.kr/vehicles/suv/q-series/6

4. 밑줄(_)은 사용하지 않는다.

  • https://foo.co.kr/vehicles/suv/q_series/6

5. URI 경로에는 소문자가 적합하다.

  • https://foo.co.kr/vehicles/suv/q6 (O)
  • https://Foo.co.kr/Vehicles/SUV/Q6 (X)

6. 파일 확장자는 URI에 포함하지 않는다. 

  • https://foo.co.kr/vehicles/suv/q6.jsp

7. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다. 

  • https://foo.co.kr/vehicles/suv/q6.do

8. 구현에 의존적인 경로를 사용하지 않는다. 

  • https://foo.co.kr/servlet/vehicles/suv/q6

9. 세션 ID를 포함하지 않는다.

  • https://foo.co.kr/vehicles/suv/q6?session-id=abcdef

10. 프로그래밍 언어의 Method명을 이용하지 않는다.

  • https://foo.co.kr/vehicles/suv/q6?action=intro

11. 명사에 단수형 보다는 복수형을 사용해야 한다. 컬랙션에 대한 표현은 복수로 사용

  • https://foo.co.kr/vehicles/suv/q6

12. 컨트롤러 이름으로는 동사나 동사구를 사용한다.

  • https://foo.co.kr/vehicles/suv/q6/re-order

13. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.

  • https://foo.co.kr/vehicles/suv/q6/{car-id}/users/{user-id}/release
  • https://foo.co.kr/vehicles/suv/q6/117/users/steve/release

14. CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.

  • GET : https://foo.co.kr/vehicles/q7/delete/{car-id} (X)
  • DELETE : https://foo.co.kr/vehicles/q7/{car-id} (O)

15. URI Query Parameter 디자인

 1) URI 쿼리 부분으로 컬렉션 결과에 대해서 필터링할 수 있다.

  • https://foo.co.kr/vehicles/suv?model=q7

 2) URI 쿼리는 컬랙션의 결과를 페이지로 구분하여 나타나는 데 사용한다.

  • https://foo.co.kr/vehicles/suv?page=0&size=10&sort=asc

16. API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.

  • https://foo.co.kr 
  • https://api.foo.co.kr

17. 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만든다.

  • https://dev-api.foo.co.kr
  • https://developer-api.foo.co.kr

 

'Study > WEB' 카테고리의 다른 글

[WEB] WS(Web Server) vs WAS(Web Application Server)  (0) 2021.07.14
[WEB] HTTP  (0) 2021.06.08
[WEB] SOAP(Simple Object Access Protocol)  (0) 2021.06.01
[WEB] XML, JSON  (0) 2021.04.11
[WEB] REST  (0) 2021.02.17
Comments