URL API

URL API는 유효한 Uniform Resource Locator를 구성하는 요소와 URL에 접근하고 조작하는 API를 정의하는 URL 표준 구성 요소입니다. 또한 URL 표준은 도메인, 호스트, IP주소 등의 개념을 정의하고 웹 폼의 콘텐츠를 키/값 쌍의 집합으로 제출하는데 사용되는 application/x-www-form-urlencoded MIME type 을 표준 방식으로 설명하려 합니다.

참고 : 이 기능은 Web Worker에서 사용할 수 있습니다.

URL 개념 및 사용법

URL 표준의 대부분은 URL의 정의와 구조 및 구문 분석 방식입니다. 또한 네트워크상의 컴퓨터 주소 지정과 관련된 다양한 용어에 대한 정의와 IP 주소 및 DOM 주소 구문 분석 알고리즘이 명시되어 있습니다. 대부분의 개발자에게 더 흥미로운 것은 API 자체입니다.

URL 요소 접근

지정된 URL에 대한 URL 객체를 생성하면 URL을 구문 분석하고 해당 속성을 통해 구성 요소에 빠르게 접근할 수 있습니다.

js
let addr = new URL("https://developer.mozilla.org/ko/docs/Web/API/URL_API");
let host = addr.host;
let path = addr.pathname;

위의 코드는 지금 읽고 있는 문서의 URL객체를 만든 다음 hostpathname 속성을 가져옵니다. 여기서 해당 문자열은 각각 developer.mozilla.org/en-US/docs/Web/API/URL_API입니다.

URL 변경하기

URL의 대부분의 속성은 설정이 가능하므로 새 값을 작성하여 객체가 나타내는 URL을 변경할 수 있습니다. 다음과 같이 URL을 만들고 사용자 이름을 설정할 수 있습니다.

js
let myUsername = "someguy";
let addr = new URL("https://example.com/login");
addr.username = myUsername;

username값을 설정하면 해당 속성의 값만 설정되는 것이 아니라 전체 URL이 갱신 됩니다. 위의 코드를 실행한 후 addr.href가 반환하는 값은 https://someguy@example.com/login입니다. 이것은 쓰기 가능한 모든 속성에 해당됩니다.

쿼리

URLsearch 속성에서는 URL의 쿼리 문자열 부분이 포함됩니다. 예를 들어 URL이 https://example.com/login?user=someguy&page=news인 경우 search 속성의 값은 ?user=someguy&page=news입니다. URLSearchParams 객체의 get() 메서드를 사용하여 개별 매개변수의 값을 조회할 수도 있습니다.

js
let addr = new URL("https://example.com/login?user=someguy&page=news");
try {
  loginUser(addr.searchParams.get("user"));
  gotoPage(addr.searchParams.get("page"));
} catch (err) {
  showErrorMessage(err);
}

예를 들어, 위의 코드에서는 쿼리에서 사용자 이름과 대상 페이지를 가져와 적절한 함수에 전달합니다. 이 함수는 사이트 코드에서 로그인 및 사이트 내 원하는 목적지로 사용자를 라우팅하는 데 사용되는 함수입니다.

URLSearchParams내의 다른 함수를 사용하면 키 값을 변경하고, 키와 해당 값을 추가 및 삭제하고, 매개변수 목록을 정렬할 수도 있습니다.

URL API 인터페이스

URL API는 이름에 몇 가지 인터페이스만 있는 간단한 API입니다.

예제

URL에 포함된 매개변수를 처리하려면 수동으로 처리할 수도 있지만, URL 객체를 생성하여 처리하는 것이 훨씬 쉽습니다. 아래의 fillTableWithParameters() 함수는 <table>를 나타내는 HTMLTableElement객체를 입력으로 받습니다. 매개변수에서 찾은 각 키에 대해 하나씩 테이블에 행이 추가되며, 첫 번째 열에는 키의 이름이, 두 번째 열에는 값이 포함됩니다.

표를 생성하기 전에 매개변수 목록을 정렬하기 위해 URLSearchParams.sort()를 호출하는 것에 유의해야 합니다.

js
function fillTableWithParameters(tbl) {
  const url = new URL(document.location.href);
  url.searchParams.sort();
  const keys = url.searchParams.keys();

  for (const key of keys) {
    const val = url.searchParams.get(key);
    const row = document.createElement("tr");
    const cell1 = document.createElement("td");
    cell1.innerText = key;
    row.appendChild(cell1);
    const cell2 = document.createElement("td");
    cell2.innerText = val;
    row.appendChild(cell2);
    tbl.appendChild(row);
  }
}

이 예제의 작동 버전은 found on Glitch에서 확인할 수 있습니다. 페이지를 로드할 때 URL에 매개변수를 추가하면 표에서 해당 매개변수를 확인할 수 있습니다. 예를 들어, https://url-api.glitch.me?from=mdn&excitement=high&likelihood=inconceivable와 같이 작성하면 됩니다.

명세서

Specification
URL
# api

브라우저 호환성

api.URL

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
URL
URL() constructor
canParse() static method
createObjectURL() static method
hash
host
hostname
href
origin
parse() static method
password
pathname
port
protocol
revokeObjectURL() static method
search
searchParams
toJSON
toString
username

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.
Requires a vendor prefix or different name for use.
Has more compatibility info.

api.URLSearchParams

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
URLSearchParams
[Symbol.iterator]
URLSearchParams() constructor
USVString for init object
record for init object
sequence for init object
append
delete
value parameter
entries
forEach
get
getAll
has
value parameter
keys
set
size
sort
toString
values

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.
Has more compatibility info.

같이 보기