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 |
---|