Web develop

[독서/ 웹을 지탱하는 기술] 2부.URI

ForA 2019. 5. 3. 17:33
728x90

URI의 스펙

URI(Uniform Resource Identifier)

  • 유니폼 리소스 식별자
  • 리소스를 통일적으로 식별하는 ID
  • URI 구문
  • ex ) http://blog.example.com/entrise/1](http://blog.example.com/entrise/1 - URI Scheme: http - host: [blog.examples.com](http://blog.examples.com/) - pass: /entries/1 ex) http://fora:pass@blog.example.com:8000/search?q=test&edbug=true#n10 - URI Scheme: http - 사용자 정보: fora:pass - host: [blog.example.com](http://blog.example.com/) - 포트번호: 8000 - 패스: /search - 쿼리 파라미터: q=test&debug=true - URI 프래그먼트: #n10

절대 경로와 상대경로

절대 경로/URI

  • OS의 파일시스템에서는 루트에서부터 전체경로를 기술한 것.
  • 주소라고 많이 불림
  • 외부 사이트의 파일을 불러올 때는 절대경로를 사용

상대 경로/URI

  • 홈페이지 내부의 파일을 불러올 때는 상대경로를 사용

URL: Uniform Resource Locator (리소스의 위치를 나타냄)

URN: Uniform Resource Name (리소스의 이름)

URI = URL + URN

URI: Uniform Resource Identifier (리소스를 식별)

리소스에 도메인명과는 독립된 이름을 붙일 수 있다. ex) urn:isbn:023475

URI의 설계

  • 좋은 URI => 변하지 않는 Cool URI.
  • 버너스-리 says “URI는 변하지 않아야한다. 변하지 않는 URI야말로 최고의 URI다"
  • 프로그래밍 언어에 의존적인 확장자와 경로를 포함하지 않는다.
    • http://example.com/servlet/LoginServlet -> 좋지못한 URI. 시스템을 서블릿에서 PHP로 바꾼 순간 변경이 된다. 대문자도 주의해야 할 점
    • 어떤 특정 언어에(pl, servlet 등등) 의존하는 문자열을 URI에 포함시키면 그 언어를 변경하자마자 그 URI를 사용할 수 없게된다.
  • 메서드명과 세션ID를 포함하지 않는다.
    • http://example.com/Login.do?action=showPage No
  • URI는 리소스를 표현하는 명사로 한다.
  • http://example.com/login 최종적으로 구현하는 로그인 URI

URI 설계 테크닉

  • 확장자로 표현을 지정한다.
    • pl, cgi등의 구현에 의존하는 확장자는 좋지 않고 리소스의 표현을 지정하는 확장자는 좋다.
    • 예를들어 콘텐트 네고시에이션의 경우, 한국어 이용자가 영어판 프레스릴리스를 가져오기 위해 브라우저 설정을 따로 변경 해 주어야 한다. 간단히 접근하기 위해서는 릴리스 언어를 명시적으로 지정한 다음 다음과 같은 URI를 사용하면 된다.
      • http://example.com/2019/press.ko
      • http://example.com/2019/press.en

매트릭스 URI

  • URI는 ‘/‘를 사용해 계층을 표현할 수 있다. 하지만 모든 정보를 계층적으로 관리할 수 없기에 다차원정보, 지도같은 것은 매트릭스 URI를 사용한다.
  • 매트릭스 URI는 계층구조를 표현하는 슬래시 대신에 각각의 파라미터를 세미콜론이나 콤마로 구분해 리소스를 표현한다.
  • 세미콜론은 파라미터의 순서가 의미를 가지지 않는 경우
  • 콤마는 파라미터의 순서가 의미를 가지는 경우 사용한다.
    • http://example.com/map/lat=35.705471;lng=139.751898
    • http://example.com/map/35.705471,139.751898
  • 위도를 표시한 예.
  • URI의 중요성
    • URI는 리소스의 이름이다
    • 수명이 길다
    • 브라우저가 어드레스 란에 표시한다

'Web develop' 카테고리의 다른 글

[독서/웹을 지탱하는 기술] 1부.웹 개론  (0) 2019.04.17