新しいHTTPメソッド
QUERYが、 “Proposed Standard” になったQUERYメソッドとは
Bodyを持てる、安全なGET
QUERYとは、
GETのように リソースの状態を変更しないPOSTのように ボディでリクエストを渡せる- レスポンスもキャッシュできる
なぜ必要なのか?
- 複雑な検索条件をサーバーに渡したい、というケース
GETでやろうとすると、条件はすべてクエリ文字列に載せることになる
GET /blogs?query=入門&limit=2&tags=TypeScript,Bun&sort=id
これでも動作するが、以下の問題がある。
- 条件がネストした構造(複雑な構造)になると表現しづらい
- URLの長さ制限に引っかかることがある
- 検索条件がURLに丸見えになる
かといって POST /blogs/search のようにしてしまうと、今度は 「これは検索なのに、意味的には状態変更(POST)に見える」 という気持ち悪さが残る&レスポンスをキャッシュすることもできない。
QUERY はこの 「ボディで複雑な条件を渡したいが、あくまで安全な読み取りである」 というギャップを埋めてくれるメソッド。