何のために URLSearchParams を使っているのですか?

詳しく解説していきます。
2023年1月17日
ユーザー

お忙しいところ恐れ入ります。

fetch メソッドの第2引数 options に指定してあるオブジェクトの body プロパティに
URLSearchParams を使用されています。

      fetch('?action=toggle', {
        method: 'POST',
        body: new URLSearchParams({  //注目箇所
          id: checkbox.dataset.id,
          token: checkbox.dataset.token,
        }),
      });

URLSearchParams を調べたところ、
引数にオブジェクト形式で値を指定すると、それを元にクエリ文字列を生成するということでした。

ここから質問なのですが、
クエリ文字列を生成する必要があるのですか?

GET 形式で送信された場合クエリ文字列が URL に付加されるため必要なのはわかるのですが、
POST 形式で受け取る場合クエリ文字列は関係ないのではないでしょうか?

例えば token の場合、
Token.php ファイルの validate メソッド内に filter_input メソッドで POST 型で token を取得しています。

  public static function validate()
  {
    if (
      empty($_SESSION['token']) ||
      $_SESSION['token'] !== filter_input(INPUT_POST, 'token')  //該当箇所
    ) {
      exit('Invalid post request');
    }
  }

body プロパティに URLSearchParams インスタンスを使用せず、
単なるオブジェクトリテラルを使用して idtoken を渡すことはだめなのでしょうか?

body: {
  id: '任意のid値',
  token: ’任意のトークン値’
}

よろしくお願いします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(4)