レッスン 2

クエリパラメータモデル

繰り返しキー、空値、フラグ、配列、フレームワークの違いを理解します。

クエリ文字列は単純なキーと値のペアに見えますが、フレームワークによってモデル化の仕方が異なります。

?tag=api&tag=json&draft=&preview

パーサーは次のように解釈するかもしれません。

  • tag を 2 つの値
  • draft を空文字列
  • preview をフラグ、または空値

繰り返しキー

クエリ文字列では繰り返しキーは合法です。

?tag=frontend&tag=backend

フレームワークによっては最後の値だけを保持し、すべてを配列に集め、tag[] のような命名規則を要求するものもあります。

空値とフラグ

すべてのシステムで同一ではありません。

?debug
?debug=
?debug=true

サーバーが存在を true とみなすなら、?debug で十分な場合があります。ブール文字列を期待するなら、debug=true が必要かもしれません。

順序

通常のフィルタリングでは、パラメータの順序は通常重要ではありません。署名とキャッシュキーでは、順序が非常に重要になることがあります。署名付き URL では、正規順序と正確なパーセントエンコーディングが必要なことが多いです。

より安全なメンタルモデル

クエリのパースと再構築が無害だと仮定しないでください。アプリケーションが次をどう扱うか決めてください。

  • 繰り返しキー
  • 空文字列
  • 欠落値
  • 配列構文
  • ソート
  • スペースとプラス記号のエンコーディング

これらの規則が明示的になると、URL バグの再現がはるかに容易になります。

実践したいときは関連する DevCove ツールを使えます。任意であり、このレッスンの必須部分ではありません。

関連ツールを開く

コース概要へ戻る