✏️ URI
URI(Uniform Resource Identifier)는 인터넷 자원의 고유 식별자이다.
URI는 URL과 URN을 포함한다.
URN은 보편적으로 사용되지 않는다.
✏️ URL의 문법
URL은 다음과 같은 문법을 가지고 있다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
ex) https://www.google.com/search?q=SMTP&hl=ko
URL은
- schme (프로토콜)
- host (호스트명)
- :port (포트 번호)
- /path (경로)
- ?query (쿼리 파라미터)
를 순서대로 작성해야 한다.
■ scheme
scheme://[userinfo@]host[:port][/path][?query][#fragment]
ex)
https://www.google.com/search?q=SMTP&hl=ko
주로 프로토콜을 사용한다.
- 어떤 프로토콜을 사용해서 리소스에 접근해야 하는지 알려준다.
- 대소문자를 구분하지 않는다.
■ userinfo
scheme://
[userinfo@]host[:port][/path][?query][#fragment]
ex) https://www.google.com/search?q=SMTP&hl=ko
- URL에 사용자 정보를 포함할 때 사용하지만, 주로 생략한다.
■ host
scheme://[userinfo@]
host[:port][/path][?query][#fragment]
ex) https://
www.google.com/search?q=SMTP&hl=ko
- 접근하려는 리소스를 가지고 있는 호스트 명
- 도메인명 또는 IP 주소를 직접 사용 가능하다.
■ port
scheme://[userinfo@]host
[:port][/path][?query][#fragment]
ex) https://www.google.com/search?q=SMTP&hl=ko
- 서버가 열어 놓은 접속 포트 번호를 작성한다.
- 일반적으로 생략, 생략 시 https는 443으로 자동 입력됨
■ path
scheme://[userinfo@]host[:port]
[/path][?query][#fragment]
ex) https://www.google.com
/search?q=SMTP&hl=ko
- 리소스의 경로를 나타낸다.
- /를 사용하여 계층적으로 나타낸다.
ex) /home/files/file1.jpg
■ query
scheme://[userinfo@]host[:port][/path]
[?query][#fragment]
ex) https://www.google.com/search
?q=SMTP&hl=ko
- 요청에 필요한 파라미터를 서버에 전달하기 위해 작성한다.
- key = value의 형태로 작성
- ?로 시작하고 &로 파라미터를 추가할 수 있다.
■ fragment
scheme://[userinfo@]host[:port][/path][?query]
[#fragment]
ex) https://www.google.com/search?q=SMTP&hl=ko
- 리소스의 특정 부분을 가리키기 위해 사용한다.
- 서버에 전송되지 않는다.
REFERENCE
HTTP 강의 - 김영한 개발자님