メインコンテンツまでスキップ

4.5.1. GET

4.5.1. GET

GET は HTTP で最も一般的に使用されるメソッドです。安全かつ冪等であると定義されています。つまり, GET リクエストはサーバーの状態に副作用を持つべきではなく, 複数の同一の GET リクエストは単一のリクエストと同じ効果を持つべきです。

特に, アプリケーションは, ユーザーからの明示的なリクエスト以外に GET リクエストが生成される可能性があるさまざまな方法を認識する必要があります:

  • プリフェッチング: ユーザーエージェントは, ユーザーが明示的にリクエストする前に URL を取得して, 体感パフォーマンスを向上させることができます。

  • クローリング: 検索エンジンおよび同様のツールは, URL をクロールしてインデックスを作成します。

  • 監視: さまざまなツールが URL を定期的に取得して, 変更や可用性を確認する場合があります。

したがって, GET を使用するアプリケーションは, サーバー状態の変更をトリガーするために使用してはなりません (MUST NOT)。アプリケーションが状態を変更する必要がある場合は, POST などの別のメソッドを使用すべきです (SHOULD)。

とはいえ, GET がログ記録などのリソース状態に影響しない副作用を持つことは許容されます。

最後に, URL のクエリコンポーネントは識別情報を運ぶためによく使用されることに注意してください。これは一般的で有用な慣行ですが, いくつかの欠点があります:

  • クエリ文字列を持つ GET リクエストは, クエリ文字列を持たないリクエストよりもキャッシュされる可能性が低くなります。

  • クエリ文字列はブラウザの履歴とログに表示されます。

  • 一部のプロキシとサーバーは URL の長さを制限する場合があります。

クエリ文字列で GET を使用するアプリケーションは, これらの問題を認識する必要があります。