RFC 10008 とは—HTTP メソッドの新しい選択肢

IETF(インターネット技術タスクフォース)が新しい HTTP メソッド「QUERY」を定義する RFC 10008 を 2026 年に正式採用しました。この仕様は J. Reschke、J.M. Snell、M. Bishop らが策定したもので、現在インターネット標準トラックの文書として位置付けられています(RFC 10008)。

QUERY メソッドは、リクエストボディに問い合わせ内容を含めながら、GET のように安全かつべき等(何度実行しても同じ結果)な処理を実現する新しい標準です。

これまで、大量のデータを伴う問い合わせをする際、開発者は GET と POST のどちらかで折り合いをつけていました。しかし両者にはそれぞれ課題があったのです。

GET と POST の限界、そして QUERY が生まれた理由

従来の HTTP メソッド運用には、実装上の矛盾が存在していました。

GET を使う場合の課題:

リクエストの内容を URI のクエリパラメータで指定する方法ですが、パラメータが増えると URI が長くなり、サーバーやネットワーク機器の制限に引っかかりやすくなります。複雑な検索条件や大量のフィルタ条件を扱う際は実用的ではありません。

POST を使う場合の課題:

リクエストボディにデータを詰め込める柔軟性がある一方で、POST は本来「サーバーの状態を変更する」ことを想定しているメソッドです。そのため「安全で、何度リトライしても問題ない」という問い合わせ操作には、セマンティック的に不適切でした。実装者に対しても「これは本当に状態を変更しない操作なのか」が明示されません。

項目 GET POST QUERY(新)
リクエストボディ 使用不可 使用可 使用可
安全性 安全 不確定 安全
べき等性 べき等 不確定 べき等
キャッシング 自動対応 要実装 自動対応
自動リトライ 安全 危険 安全
URI 制限 あり なし なし

この矛盾を設計レベルで解決するため、QUERY メソッドが提案・採用されたのです。

QUERY メソッドの動作—安全性とべき等性を明示する

QUERY メソッドの仕様によれば、以下の特性を持ちます。

  • リクエストボディに問い合わせ条件を JSON やその他のフォーマットで指定できる
  • サーバー側は Content-Type ヘッダでリクエストの形式を検証し、不正なものは拒否しなければならない
  • メソッド自体が「安全かつべき等」であることを明示しているため、中間キャッシュやプロキシが自動的に適切な処理(キャッシング・リトライ)を行える
  • さらに仕様では、サーバーが問い合わせ結果に対して URI を割り当て、後で GET でアクセス可能にする設計も示唆している

重要なのは、メソッド名とセマンティクスが一致することで、機械的・自動的な最適化が可能になることです。

実装の観点では、既存の HTTP ライブラリやフレームワークが徐々に QUERY 対応を進めることになります。クライアント側は「これは問い合わせ操作である」と明確に意図を表明でき、サーバー側も「リトライやキャッシュを安全に行える」と判断しやすくなるわけです。

開発現場への影響—特にデータベースクエリとマイクロサービスで

現在、多くの Web API は POST を流用してクエリ操作を実装しています。GraphQL・Elasticsearch・BigQuery API など、複雑な検索条件を扱うサービスはすべて POST でリクエストボディを受け取る設計です。

この設計自体は機能面では問題ありませんが、QUERY メソッドが普及すれば、以下の利点が期待できます。

  • キャッシング戦略の改善:キャッシュサーバーやCDN が QUERY リクエストを「安全な操作」と認識し、自動的にキャッシュ対象にできる
  • 自動リトライの安全性向上:API ゲートウェイやロードバランサーが、確実に状態を変更しない操作として扱える
  • 監査・ロギングの明確化:HTTP レベルでメソッドから意図が読み取れるため、セキュリティツールの判定が簡単になる
  • OpenAPI・GraphQL との相互運用:REST API の仕様書が「これはクエリメソッドである」と明確に記述できる

ただし、標準化が決まっても、実際の普及には時間がかかります。Java(Spring)・Python(Flask/Django)・Node.js(Express)など主要フレームワークが対応してこそ、実務レベルでの活用が始まります。

実装のタイミングと注視すべき点

QUERY メソッドは RFC として正式化されていますが、ブラウザやサーバーソフトウェアでの対応状況はまだ初期段階と考えられます。開発者の方が実装する際は、以下を意識しておくことをお勧めします。

  • 段階的な導入:既存の POST ベース API を QUERY に置き換える必要はなく、新規に設計する API から採用を検討する
  • 後方互換性の確保:QUERY に対応していないクライアントもあるため、POST との併用選択肢を残す
  • HTTP ライブラリの確認:自分たちが使っている言語・ライブラリが QUERY をサポートしているか、今後のロードマップを確認しておく

参考までに、参考記事として挙げられている Homebrew 6.0 のような開発ツール更新も増えており(出典)、セキュリティと標準化への関心が業界全体で高まっています。同様に、HTTP レベルでの機能強化は、Web API 全体の安全性向上へつながる傾向が続くと感じます。