今週初め、セマンティクス違反のようなことをしなければなりませんでした。説明させてください。
私は単純な AJAX クライアント アプリケーションを作成していました。これは、指定された数のパラメーターを使用してサービスに要求を行うことでした。アプリ全体が基本的に読み取り専用なので、HTTP GET を使用するのがよいと思いました。渡さなければならなかったパラメーターのいくつかは単純なものでした (ソート順やページ番号など)。
ただし、必要なパラメーターの 1 つが可変長である可能性があり、これが心配でした。GET リクエストのクエリ文字列内のすべてのパラメータをエンコードしていたので、リクエスト URL に対して (およそ) 2000 文字という不必要な上限が設定されているように思えました。いずれにせよ、私は 500 文字の長さのリクエスト URL を見るのが好きではありませんでした。
というわけで、POSTリクエストにはそのような制限がないので、切り替えることにしました。しかし、これは正しくありません。POST はデータの変更を意味するという印象を受けていますが、単純な読み取り専用リクエストに使用しています。
これを行うより良い方法はありますか?多くのパラメーターを使用して GET を実行するには? パラメータ自体の予備的な POST を実行してから、GET を実行するという 1 つの方法について聞いたことがあります。しかし、この技術には多くの要望が残されています。
しかし、この特定のケースを振り返ってみると、HTTP 要求メソッドの実際のセマンティクスと制限は何でしょうか? また、GET がどの種類のパラメーター ペイロードもサポートしていないのはなぜですか? URL でクエリ文字列を使用することは、私にはハックのように感じられます。