【JavaScript】URLのクエリパラメーターの作り方と取得や削除する方法

URL-QueryParameter

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、JavaScriptでURLのクエリパラメーターの作り方と取得や削除する方法を解説していきます。

URLのクエリパラメーターとは?

クエリ文字列(URLパラメーター)とは、サーバーに情報を送るためにURLの末尾につけ足す文字列(変数)のことです。 

クエリパラメーターのルールは?

クエリパラメーターの形は、次のようにルールが決まっています。

  1. パラメーターは、パスの後に「 ? 」を付けてから、書き始める。
  2. 各パラメーターは、その名前(key)と値(value)を「 = 」で繋げて記述する。
  3. 複数のパラメーターをつける場合は、パラメーター同士を「 & 」で区切る。
  4. 「 # 」記号で始まるページ内Linkを付ける場合は、すべてのクエリパラメーターよりも後につける。

URLSearchParams() を使って、クエリパラメーターを作る方法

クエリパラメーター(クエリ文字列)を作る際に、一番簡単に作れるのは、

URLSearchParams() & toString() を使用する方法です。

URLSearchParams.toString()

URLSearchParams インターフェイスの toString() メソッドは、URL での使用に適したクエリー文字列を返します。

引用元: MDN: URLSearchParams.toString()

次のように「 key=value 」のクエリパラメーター(クエリ文字列)をObjectの「 key:value 」として作成して、

new URLSearchParams() の引数に渡して、

URLSearchParams の toStringメソッドを呼び出すことで、クエリパラメーターを作成できます。

// [ 1. URLSearchParams() を使って、クエリパラメーターを作る方法 ]

// 1. Parameter-Object
const params = {
    keyword: "robotama",
    tag: "purupuru"
}

// 2. URLSearchParams-Instance
const urlSearchParam = new URLSearchParams(params).toString();

console.log({urlSearchParam});
    // {urlSearchParam: 'keyword=robotama&tag=purupuru'}

クエリパラメーターの作成と取得と削除(Set・Get・Delete)

URLSearchParamsは、クエリパラメーターを取り扱うためのClassであり、その親ClassはURL-Classです。

なので、次のようにURLのインスタンスを作成してから、searchParamsプロパティ(URLSearchParamsと同じ機能)を使って、

クエリパラメーターの作成と取得と削除(Set・Get・Delete)をすることができます。

// [ QueryParameter の Set・Get・Delete  ]

console.log(window.location);

// 1. 現在のURLからURL-Instance を生成する!
let url = new URL(window.location.href);

console.log({url});

console.log(url.href);
    // https://masanyon.com/


// 2. keyを指定して、queryParameterをSetする
url.searchParams.set('paramKey', 'paramVal');

// 同じKeyを指定すると、Valueは上書きされる。
url.searchParams.set('paramKey', 'robotamaVal');

console.log(url.href);
    // https://masanyon.com/?paramKey=paramVal


// 3. keyを指定して、queryParameterを取得する
const addParam = url.searchParams.get('paramKey');
console.log(addParam);


// 4. keyを指定して、queryParameterを削除する
url.searchParams.delete('paramKey');

console.log(url.href);
    // https://masanyon.com/

クエリパラメーターを追加して、Redirectする

次のSampleCodeでは、URLSearchParams の append() で、クエリパラメーターを追加した後に、

location.href を使って、クエリパラメーターを付与した状態のPageにRedirectしています。

// [ QueryParameter を追加して、RedirectするSample ] 

// 1. 現在のURLからURL-Instance を生成する!
let url2 = new URL(window.location.href);

console.log({url2});

if (!url2.searchParams.get('key')) {

    url2.searchParams.append('key', 'value');

    url2.searchParams.append('key', 'robotama-value');

    // 2. QueryParameterをSetした状態で、Redirectする。
    location.href = url2;

    console.log({url2});

    console.log(url2.href);
        // https://masanyon.com/?key=value&key=robotama-value
} else {

    console.log(url2.href);
    console.log(url2.searchParams.get('key'));
}

URLSearchParams.set() と URLSearchParams.append() の違い

URLSearchParamsの setメソッドと、appendメソッドには、同じ Key名を複数、設定できるかどうかの違いがあります。

URLSearchParams.set(): 一致する値が複数ある場合、このメソッドは他の値を削除します。

URLSearchParams.append(): 同じキーが複数回追加された場合、各値がパラメーター文字列に複数回現れます。

とMDNの説明にあります。

この2つのメソッドは、用途に応じて使い分けましょう。

【追記】クエリパラメーターに関する関連記事

後日、新しいクエリパラメーターに関する関連記事を作成しました。

説明する内容をまとめると次のとおりです。

  1. 正規表現で、クエリパラメーター(?)があるかどうかの判定をする方法。
  2. クエリパラメーター(?)の部分や、その前のURL部分を取得する方法。
  3. Path文字列の末尾にCacheBuster (キャッシュ無効化)のタイムスタンプを追加する方法。
  4. クエリパラメーター文字列を JavaScript Object に変換する方法。
  5. JavaScript Object をクエリパラメーター文字列に変換する方法。

JavaScript Object をクエリパラメーター文字列に変換する方法は、この記事で説明していますが、

それ以外は、まったく紹介していないやり方なので、上記の内容の入れずれかを確認したい場合は、この記事が適しています。

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

参考・引用

  1. JavaScriptでクエリ付きURLを簡単に作る(URLSearchParams)
  2. MDN: URLSearchParams
  3. MDN: URL()
  4. MDN: URLSearchParams.toString()
  5. MDN: URLSearchParams.set()
  6. MDN: URLSearchParams.append()
  7. 【Javascript】URLのクエリパラメータの操作方法(付与、取得、削除)
  8. JavaScript で URL のクエリパラメータを操作する方法
  9. URLのGETパラメータの値を更新する

最近の投稿