반응형
URI(Uniform Resource Identifier)
'통합 리소스 식별자'(라고 해도 될까?)의 약어인 URI는 인터넷 환경에서 특정 리소스를 지칭하는 문자 형태의 식별자다.
URI는 두 형태로 나뉘는데, URL(Uniform Resource Locator), URN(Uniform Resource Number)이 그것이다.
- URL : 위치로 리소스를 식별한다.
- URN : 이름으로 리소스를 식별한다.
URI의 세부구조
[scheme]://[authority]:[port]/[path][?query][#fragment]
scheme
https://
- 스킴 혹은 프로토콜(protocol)로 명명된다. 웹에서 페이지 로드, 메일 및 파일 전송과 같은 특정 임무를 수행하려면 어떤 통신규약을 따라야 하는지를 명시한다.
- http/https, malito, ftp 등이 대표적이다.
authority
www.naver.com
- 도메인 이름 혹은 권한.
port
localhost:3000 에서 3000이 port다.
- 웹 서버 상의 리소스에 접근하는데 사용되는 기술적인 문(gate).
- 리소스에 접근하기 위한 권한을 얻기 위해 웹 서버가 HTTP 프로토콜의 표준 포트(HTTP는 80, HTTPS는 443)를 사용하는 경우 일반적으로 생략된다. 이 외의 경우 포트 입력은 필수.
path
- 웹 서버 상의 리소스 경로.
- 물리적인 실제 위치라기 보다는 웹 서버에 의해 표현되는 추상적인 위치.
- ex) www.google.com/main/news/tech
query
- 웹 서버에 제공되는 추가적인 파라미터.
- path와 query는 ? 기호로 구분한다.
- 파라미터는 키-값 한 쌍으로 구성되며, & 기호로 각 파라미터를 구분한다.
- ex) www.google.com/main/news/tech?category=IT&page=1
fragment
- 사용 여부는 필수가 아니다.(optional)
- 해시 기호(#)로 시작되며, 리소스 내의 '북마크' 지점에 위치한 컨텐츠를 호출한다.
- 북마크 이름은 HTML 태그의 id 속성값을 따른다.
아래 그림은 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web 이라는 URL로 접속한 이미지다. URL 끝에 '#프래그먼트'를 추가하면 프래그먼트 설명 섹션으로 스크롤이 이동된다.
(https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web#프래그먼트)
그 이유는 오른쪽 개발자도구에서 확인 할 수 있듯이 <a> 태그에 id 속성값으로 '프래그먼트'가 입력되었기 때문이다.
URL(Uniform Resource Locator)
- URI의 가장 일반적인 형식.
- 앞서 언급 했듯이, URL은 리소스의 고유한 위치를 나타낸다.
- URL은 HTTL, HTTPS, FTP와 같은 프로토콜과 함께 붙어서 사용된다.
- 이 URL에 URN이 포함된 것이 URI다. 따라서 URI 안에 URL이 있다.
URN(Uniform Resource Number)
- 이름으로 리소스를 식별하는 URI.
아래 코드는 조지 오웰의 책 1984를 나타내는 URN이라고 한다.
urn:isbn:9780141036144
URI와 URL의 차이점
- URI는 식별자의 역할을, URL은 위치를 나타내는 역할에 중점을 둔다. 따라서 URL은 URI 안에서 '리소스의 위치'를 나타내는 한정적인 역할을 수행하며, URI는 보다 넓은 의미에서 'URL + 리소스 식별자'의 역할도 수행한다.
1) https://www.google.com | URI( O ) / URL( O ) |
2) https://www.google.com/mypage/image/cokezero.jpg | URI( O ) / URL( O ) |
3) https://www.google.com/news/tech/?id=123 | URI( O ) / URL( X ) |
4) https://www.google.com/123 | URI( O ) / URL( X ) |
- https://www.google.com 라는 서버를 나타낸다.(식별자이면서 위치를 나타낸다) URI, URL 둘 다 만족.
- https://www.google.com/mypage/image/cokezero.jpg cokezero.jpg 리소스의 위치를 정확히 명시하고 있다. URL, URL 둘 다 만족.
- https://www.google.com/news/tech/ 까지 URL로 인정. 이후의 쿼리 ?id=123은 해당 리소스의 고유 식별자이기 때문에 URL은 될 수 없고 URI라고 할 수 있다.
- 리소스 위치를 나타내는 URL 이후 리소스 고유 식별자 123이 추가되었다. URL은 될 수 없고 URI라고 할 수 있다.
쉽지 않다.
참고
https://www.javatpoint.com/uri-vs-url
https://medium.com/@js230023/url-%EA%B3%BC-uri%EC%9D%98-%EC%B0%A8%EC%9D%B4-154d70814d2a
반응형
'Programming > 기초지식' 카테고리의 다른 글
[객체 지향] 캡슐화(Encapsulation) (0) | 2021.10.21 |
---|---|
절차지향과 객체지향 (0) | 2021.10.21 |
Parameter와 Argument의 차이점 (0) | 2021.08.25 |
[Lombok] 생성자를 만드는데 사용되는 Lombok 어노테이션 (0) | 2021.08.25 |
[Gradle] Could not find method compile() arguments~ (0) | 2021.08.17 |