본 글은 hash change와 history API를 공부하고 기술하기 위해 URL API를 훑어보기 위한 글 이며 MDN문서를 참고하였습니다.
URL API는 '유효한' Uniform Resource Locator을 구성하는 요소와 URL에 엑세스하고
조작하는 API를 정의하는 URL 표준의 구성 요소입니다.
앞선 설명에 덧붙여 MDN에는 URL 표준은 도메인, 호스트 및 IP 주소와 같은 개념을 정의하며, 웹 양식의 내용을 키/값 쌍의 집합으로 제출하는 데
사용되는 레거시 응용 프로그램application/x-www-form-urlencoded인코딩 MIME 유형을 표준 방식으로 설명하려고 시도한다 라고 되어있습니다.
URL 인터페이스는 URL을 분석, 생성, 정규화, 인코딩 할 때 사용됩니다.
URL의 각 구성요소를 쉽게 읽고 쓸 수 있는 속성을 제공합니다.
URL 객체 생성은 생성자 전체 URL 문자열, 또는 상대 URL과 기준 URL을 생성자에 전달해 진행합니다.
생성한 URL 객체를 사용해 URL 객체를 사용해 URL을 쉽게 바꾸거나 읽을 수 있습니다
브라우저가 아직 URL() 생성자를 지원하지 않을 땐 Window인터페이스의 Window.URL속성으로 URL객체에 접근할 수 있습니다.
new URL()
주어진 절대 URL, 또는 상대 URL과 기준 URL 문자열을 사용해 생성한 URL객체를 생성하고 반환합니다.
const url = new URL(url[, base])
/*
절대 또는 상대 URL을 나타내는 USVString. url이 상대 URL인 경우 base 매개변수를 기준 URL로 사용하므로 base도 필수로 지정해야 합니다.
절대 URL인 경우 base는 무시됩니다.
*/
// base url에 맞춰 상대경로 지정
new URL('/en-US/docs', "https://developer.mozilla.org/fr-FR/toto"); // 'https://developer.mozilla.org/en-US/docs'
// base url이 없어 에러 발생
new URL('/en-US/docs', '') // Raises a TypeError exception as '' is not a valid URL
// 절대 경로 url이 아닌 이상 base 매개변수는 필수로 입력되어야함.
new URL('/en-US/docs'); // Raises a TypeError exception as '/en-US/docs' is not a valid URL
| 속성명 | 설명 |
|---|---|
| hash | #과 URL의 프래그먼트 식별자를 담은 USVString입니다. |
| host | URL의 도메인(호스트 이름), ':', 포트를 담은 USVString입니다. |
| hostname | URL의 도메인을 담은 USVString입니다. |
| href | 전체 URL을 반환하는 문자열화 속성입니다. |
| origin | URL의 출처, 즉 스킴, 도메인, 포트를 담은 USVString입니다. |
| password | 도메인 이름 이전에 지정된 비밀번호를 담은 USVString입니다. |
| port | URL의 포트 번호를 담은 USVString입니다. |
| protocol | URL의 프로토콜 스킴을 담은 USVString입니다. 마지막 ':'을 포함합니다. |
| search | URL의 매개변수 문자열을 나타내는 USVString입니다. 어떤 매개변수라도 존재하는 경우 '?'문자로 시작해, 모든 매개변수를 포함합니다. |
| searchParms | search속성의 매개변수 각각에 접근할 수 있는 URLSearchParams객체 입니다. |
| username | 도메인 이름 이전에 지정된 사용자 이름을 담은 USVString입니다. |
| 메서드 | 설명 |
|---|---|
| toString | 전체 URL을 담은 USVString을 반환합니다. URL.href와 동일하나, toString() 으로는 URL을 편집할 수 없습니다. |
| toJSON() | 전체 URL을 담은 USVString을 반환합니다. URL.href 와 동일한 문자열을 반환합니다. |
| 정적 메서드 | 설명 |
|---|---|
| createObjectURL | 고유한 블룹 URL, 즉 blob:을 스킴으로 하고, 브라우저 내의 객체를 가리키는 고유한 불투명 문자열을 그 뒤에 붙인 DOMString을 반환합니다. |
| revokeObjectURL() | 이전에 URL.crateObjectURL()로 생성한 객체 URL을 취소합니다. |
위와 같은 순서로 URL은 구성됩니다.
이미지 출처: https://www.zerocho.com
예시)
const url = new URL('https://developer.mozilla.org/en-US/docs/Web/API/URL_API')
console.log(url)
/*
URL {
href: 'https://developer.mozilla.org/en-US/docs/Web/API/URL_API',
origin: 'https://developer.mozilla.org',
protocol: 'https:',
username: '',
password: '',
host: 'developer.mozilla.org',
hostname: 'developer.mozilla.org',
port: '',
pathname: '/en-US/docs/Web/API/URL_API',
search: '',
searchParams: URLSearchParams {},
hash: ''
}
*/
https://developer.mozilla.org/en-US/docs/Web/API/URL_API https://developer.mozilla.org
- 현재는 보안을 위해 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP인 HTTPS를 사용합니다.
SSL인증서는 일반 HTTP 요청 및 응답을 암호화 합니다. 즉, HTTPS는 HTTP보다 더 안전한 보안용 프로토콜 입니다.
웹 (www)의 포트 번호는 80입니다.