URL とクエリ文字列
URL とクエリ文字列
URL レイヤーは WHATWG スタイルのパースを実装しています — ブラウザが適用するのと同じ動作です — そのため、ドキュメントから抽出された URL は実際のユーザーエージェントでの動作と同様に解決および正規化されます。
パースと検証
URL.parse() は絶対または相対 URL を解析します; URL.can_parse() はオブジェクトを構築せずに有効性を返します。パース失敗時には型付けされた URLParseError が発生します。
クエリ文字列
URLSearchParams はクエリパラメータを読み取り、編集します: append(), get(), get_all(), has(), および delete() はラウンドトリップをカバーし、マルチバリューのセマンティクスを保持します。
ヒントとベストプラクティス
- フィルタで簡易的な検証を行うには
can_parse()を使用し、コンポーネントが必要なときだけparse()で構築してください - クエリキーが繰り返されることを覚えておいてください — パラメータが複数回出現する可能性がある場合は
get_all()を使用します - 正規表現で事前検証するよりも、
URLParseErrorを捕捉してください
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
| 相対 URL が解析に失敗しました | ベースが提供されていません | URL.parse() に従ってベースを指定してください |
| 最初のクエリ値のみが返されます | 繰り返しキーに get() を使用しました | 使用 get_all() |
| コンポーネント内の奇妙な文字 | WHATWG 正規化が動作中 | 期待通り — これはブラウザの挙動と一致します |
FAQ
パースは WHATWG 標準に従っていますか?
はい — 正規化とコンポーネントの分割はブラウザの動作を鏡のように再現します。
URL をパースせずにチェックするにはどうすればいいですか?
URL.can_parse() はオブジェクト構築せずに有効性を返します。
クエリ文字列をその場で編集できますか?
はい — URLSearchParams は append/get/has/delete の往復操作をサポートします。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
URL.parse | URL を解析する |
URL.can_parse | 構築なしの有効性チェック |
URLSearchParams.append | クエリパラメータを追加 |
URLSearchParams.get_all | キーのすべての値 |
URLParseError | 型付きパース失敗 |