URI(Uniform Resource Identifier)
URI는 URL과 URN을 포함하는 큰 개념이며 리소스(자원)을 식별한다. 예를 들면 사람의 주민등록번호 처럼 식별하는 것이다.
URL과 URN
URL: 리소스의 위치, 사람으로치면 현재 있는 위치, URN: 리소스의 이름, 사람으로치면 그 사람의 이름
URN으로는 거의 찾을 수 없어서 사실상 URL만 사용한다고 보면된다. 즉, URI를 URL과 같은 의미로 봐도 된다.
URL 문법
URL은 "scheme://[userinfo@]host[:port][/path][?query][#fragment]" 이런 구조를 가지고 있다. 예시로 "https://www.google.com:443/search?q=hello&hl=ko" 이렇게 사용한다.
sheme
"https://www.google.com:443/search?q=hello&hl=ko"에서 https를 의미한다.
sheme에서는 주로 프로토콜을 사용한다. http(80 포트), https(443 포트), ftp 등이 있고 포트는 생략이 가능하다.
userinfo
URL에 사용자 정보를 포함하여 인증하는 것이다. 거의 사용하지 않는다.
host
"https://www.google.com:443/search?q=hello&hl=ko"에서 www.google.com를 의미한다.
도메인명 혹은 IP 주소를 직접 사용할 수 있다.
port
"https://www.google.com:443/search?q=hello&hl=ko"에서 443를 의미한다.
특정 서버에 따로 접근할 때 입력하고 일반적인 웹 브라우저에서는 생략을 많이 한다.
path
"https://www.google.com:443/search?q=hello&hl=ko"에서 search를 의미한다.
리소스의 경로를 의미하고 계층적 구조이다.
-예시
/home/file1.jpg: 이런 디텍토리 구조로 이루어질 수 있다.
/members: 회원들의 정보를 보여주는 사이트일 수 있다.
/members/100, /items/iphone12: members, items가 정보가 있는 디렉토리라 하면 안에 100번 id를 가진 회원이 존재한다.
query
"https://www.google.com:443/search?q=hello&hl=ko"에서 ?q=hello&hl=ko를 의미한다.
"key=value"의 형태이며 "?"로 시작하고 "&"로 추가한다. query parameter, query string 등으로 불리며, 웹 서버에 제공하는 파라미터이다.
fragment
fragment도 잘 사용하지 않는다. "https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-introducing-spring-boot"에서 #getting-started-introducing-spring-boot를 의미한다.
html 내부 북마크 등에서 사용되고 서버에 전송하는 정보는 아니다.