配列クエリの契約は型ではなく実際のwire表現を両端で固定する
テスト
API設計
境界契約
判断
運用
HTTP クライアントと API が同じ「数値配列」を扱っていても、クエリ文字列での表現が一致するとは限らない。添字風のキー、同名キーの繰り返し、カンマ区切りなどは型の上では同じ配列に見えるが、サーバーのパーサーは別のキーや値として扱う。両側がそれぞれ自分の形式をモックや直接ハンドラ呼び出しで固定すると、両テストが green のまま実 HTTP 経路だけが値を失う。
判断
配列クエリを追加・変更するときは、wire 上の正規表現を一つ選び、クライアントのシリアライズとサーバーのパースで共有契約にする。後方互換が必要な場合だけ複数形式を受け、内部表現へ正規化する。型定義や入力スキーマに配列があることは、wire 契約の証拠にしない。
この確認は、そのパラメータが省略時に既定値へ落ちる、絞り込みが外れる、または通常経路に代替動作がある場合に特に重要である。値が黙って空になってもエラーにならず、別の正常系に見えるため発見が遅れる。
検証方法
- クライアント側では、生成された URL のキー名と繰り返し方を直接検証する。
- サーバー側では、その実 URL と同じwire表現を HTTP 入口へ渡し、末端の検索条件や処理結果まで値が届くことを検証する。
- 可能ならクライアントの実シリアライザから出した URL をサーバーの入口テストへ流し、両端が別々のfixtureを持たないようにする。
- 故意に別表現へ変えたとき、境界テストが red になることを確認する。ハンドラ直呼びや API client のモックだけでは、この故障を識別できない。