16年もの間、サーバーに対して複雑な質問を投げたい開発者たちは、回避策に頼らざるを得ませんでした。検索ペイロードがURLに対して大きすぎたり、ネストされたフィルターや機密性の高いパラメータがクエリ文字列に収まりきらなかったりする場合、唯一の実用的な選択肢はPOSTでした。POSTはバイトデータを運びますが、その意図については嘘をついていました。POSTは状態の変化を意味します。読み取り専用の操作にPOSTを使用すると、キャッシュ、プロキシ、ブラウザといったネットワークパス全体が、単なる検索を「データベースを変更する可能性があるもの」として扱わざるを得なくなりました。

その妥協はついに終わりました。2026年6月、IETFはRFC 10008を公開し、QUERYメソッドを正式に標準化しました。これは2010年にPATCHが導入されて以来、初めての新しいHTTPメソッドです。QUERYは、ボディを必要とする安全でべき等なリクエストのために特別に存在します。サーバーの状態を変更しません。同じリクエストを繰り返しても、同じ結果が得られます。キャッシュ可能であり、これは中間装置がレスポンスを保存して再利用できることを意味します。そしてGETとは異なり、POSTと同じようにデータペイロードを許可します。

GraphQLのクエリや複雑なRESTの検索エンドポイントは、最大の恩恵を受けるでしょう。60個ものクエリパラメータをURLに詰め込んだり、中間装置がキャッシュを拒否するようなPOSTボディの中にJSONフィルタードキュメントを隠したりする必要はもうありません。セマンティクスが、ようやく誠実なものになったのです。

しかし、RFCは単なる紙の上の記述に過ぎません。アプリケーションとユーザーの間には厚いインフラ層が存在しており、そのほとんどはQUERYという存在すら知りません。

キャッシングの問題はまだ解決していない

GETリクエストの場合、キャッシングは単純です。キャッシュキーはURIです。ヘッダーが許可していれば、同じURLにアクセスした2人のユーザーは、保存された同じレスポンスを受け取ります。

QUERYはこのモデルを壊します。なぜなら、リクエストパラメータがボディ内に存在するからです。キャッシュが2つのリクエストが同一であることを認識するためには、キャッシュキーにURIとボディ内容の両方を組み込まなければなりません。この要件は、実際の運用上の摩擦を生じさせます。

第一に、エッジサーバーやCDNは、ハッシュを計算する前にリクエストボディ全体をバッファリングする必要があります。これにはエッジノードでのメモリと時間を消費します。第二に、論理的に同一のクエリであっても、生成されるバイト列が同じとは限りません。あるクライアントは {"status":"active"} を送信し、別のクライアントは空白やキーの順序が異なる {"status": "active"} を送信するかもしれません。キャッシング層がボディを解析、正規化、およびカノニカル化(JSONキーのソート、不要なフォーマットの削除、エンコーディングの違いの処理など)を行わない限り、同じ質問であっても毎回キャッシュミスが発生してしまいます。

最も重大なのは、主要なCDNはQUERYにおいて、リクエストボディによるキャッシュのパーティショニングをまだ行っていないことです。例えばCloudflareは、現在の形式では、このメソッドのボディをキャッシュキーの一部として扱っていません。もし「キャッシュ可能であること」が「キャッシュされていること」を意味すると仮定してQUERYをデプロイすると、衝突エラーや、キャッシュが全く効かない状態、あるいは無関係なリクエスト間でレスポンスが漏洩するなどの問題が発生する可能性があります。プロバイダーが明示的なサポートを発表するまでは、本番環境においてQUERYは実質的にキャッシュ可能ではないと考えておくべきです。

おそらく、まずツールによってブロックされる

すべてのHTTPリクエストは、一連のミドルボックスを通過します。そしてそのほとんどは、どのメソッドが有効であるかについて厳格なルールを適用しています。

Web Application FirewallやAPIゲートウェイは、多くの場合、明示的な許可リスト(allowlist)に依存しています。典型的なルールセットでは、GET、POST、PUT、DELETE、PATCHが許可されています。それ以外のものはすべて破棄されるか、405 Method Not Allowedで応答されます。QUERYは、アプリケーションコードに到達する前に、それらの壁に突き当たることになります。

セキュリティルールエンジンも、もう一つの障害となります。一部の侵入検知システムは、ボディを伴うリクエストが...