쿼리스트링은 데이터를 전달하기 위한 하나의 방법으로, 쿼리스트링은 URL에 포함하여 전달하게 됩니다. 쿼리스트링과 URL 주소를 구분하기 위해서 ?
를 사용합니다. 데이터는 key=value
로 구성하며, 여러 값을 전달할 때는 &로 구분합니다.
http://0.0.0.0:8080/index?key1=value1&key1=value1
URLSearchParams
는 쿼리스트링을 손쉽게 사용할 수 있도록 해주는 생성자입니다. 인스턴스 생성 시 초기 쿼리스트링 값을 넘겨줄 수 있습니다.
new URLSearchParams(?init)
URLSearchParams는 다양한 메서드를 제공하고 있습니다. 자주 사용했던 메서드들만 소개하도록 하겠습니다.
append(name, value)
delete(name)
forEach(callback)
get(name)
has(name)
true
, 아니라면 false
를 반환합니다.toString()
const urlSearch = new URLSearchParams();
urlSearch.append('name', 'Kim');
if (urlSearch.has('name')) {
console.log(urlSearch.get('name')); // Kim
}
console.log(urlSearch.toString()); // name=Kim
urlSearch.delete(name);
console.log(urlSearch.toString());
URLSearchParams 생성자를 통해 인스턴스 생성시 객체를 넘겨줄 수 있습니다. 객체를 쿼리스트링 형태로 변환할 때 사용하면 편리하게 작성할 수 있습니다.
const data = {
name: 'Kim',
age: 24
};
const urlSearch = new URLSearchParams(data);
console.log(urlSearch.toString()); // name=Kim&age=24
globalThis.location.search
을 통해서 URL의 쿼리스트링 부분만 추출가능합니다. 해당 값을 파라미터로 넘겨줘서 객체를 생성할 수 있습니다. 그 후 get 메서드를 통해 쉽게 값을 추출할 수 있습니다.
const url = globalThis.location.search;
const urlSearch = new URLSearchParams(url);
urlSearch.get('key');
URL 자체를 인스턴스 생성시 넘겨주면 원하는 결과가 나오지 않습니다. globalThis.location.search를 통해서만 가능합니다.