【要約】新しいHTTPメソッド「QUERY」をHono + Bunで実装してみる [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
API開発者が、複雑な検索条件をサーバーへ渡す際に、既存のHTTPメソッドでは設計上のジレンマに直面する。具体的には以下の問題が発生する。
- ・GETを使用する場合、クエリ文字列の長さ制限や、ネストした構造の表現が困難になる。
- ・POSTを使用する場合、検索という読み取り操作が「状態変更」として誤認され、レスポンスのキャッシュができない。
- ・GETのボディ利用は、プロキシやキャッシュによって無視されるリスクがある。
// Approach
筆者は、新しいHTTPメソッド「QUERY」の有用性を検証するため、HonoとBunを用いてAPIの実装を行った。以下のステップで実装を進めている。
- ・Honoの
app.onメソッドを用い、標準外の「QUERY」メソッドをルーティングに登録する。 - ・
OPTIONSリクエストに対し、Allow: QUERYおよびAccept-Queryヘッダを返し、メソッドの対応状況を宣言する。 - ・
zod-validatorを組み合わせ、リクエストボディのJSONスキーマバリデーションを実装する。
// Result
筆者は、実装を通じて複雑な検索条件をJSON形式で安全かつ冪等に送信できることを確認した。
- ・
curl -X QUERYを用いることで、ボディ付きの検索リクエストが正常に動作することを確認した。 - ・バリデーションエラー(400 Bad Request)や、不適切なContent-Type(415 Unsupported Media Type)の制御も実現している。
- ・今後の課題として、ブラウザやCDN等のインフラ層の対応が必要であることが示唆された。
Senior Engineer Insight
> 検索APIの設計において、GETとPOSTの欠点を補完する理想的なメソッドである。複雑なフィルタリングを扱う大規模システムでは、URLの肥大化を防ぎつつキャッシュ効率を高められる。ただし、プロキシやCDNがこのメソッドを未知のものとして扱うリスクがある。実戦投入には、インフラ側の対応状況を慎重に見極める必要がある。