クエリストリングが存在する理由
可能性のある状態ごとに別のページを用意しなくても、1つのURL・ページで可変のデータを渡せるようにするために存在します。検索結果やフィルタ、ページネーション、トラッキング、APIリクエストなどはいずれもURLを通じてパラメータを渡すこの仕組みに依存しています。特定のフィルタ条件をブックマークしたり共有したりできるのも、状態そのものがURLに保存されているためです。
手作業でクエリストリングを組み立てる方法
各key=valueのペアを「&」でつなぎ、それぞれのキーと値に含まれる特殊文字を先にパーセントエンコードした上で、全体の先頭に「?」を付けてベースとなるURLに追加します。このエンコードの工程を正しく行わないことが、特にスペースや非ASCII文字を含む場合にリンクが壊れる最もよくある原因です。
よくある質問
クエリストリングは見えてしまうのですか、安全性はありますか?
はい、ブラウザのアドレスバーや閲覧履歴、サーバーのログ、他サイトに送られる「Referer」ヘッダーなどに完全に表示されてしまいます。そのためパスワードのような機密情報を渡す用途には絶対に使うべきではなく、HTTPS通信であっても「安全」とは言えません。
クエリストリングとURLのパス部分はどう違うのですか?
パス(/products/shoesのような部分)は通常、比較的固定された階層構造で特定のリソースを指し示します。クエリストリング(?color=red&size=10)は、そのリソースを絞り込んだり調整したりするための任意の可変パラメータのためのもので、組み合わせごとに全く別のパスを用意する必要をなくす役割を持っています。