しばらくの間、私は (誤って) RESTful API が CRUD 操作を Web アプリケーションの永続エンティティに公開しただけだと考えていました。「現実の世界」で何かをコーディングすると、それだけでは不十分であることがすぐにわかります。たとえば、銀行口座振替は永続エンティティである必要はありません。これは、ペイロードで詳細を指定するPOST一時的なリソースである可能性があります。/transfers/
{"accountToCredit":1234, "accountToDebit":5678, "amount":10}
サーバーの状態を変更するため、ここで使用POSTすることは理にかなっています (これが発生するたびに、10 ドルが 1 つのアカウントから別のアカウントに移動しPOSTます)。
サーバーに影響がない場合はどうすればよいですか? 簡単な最初の答えは、 を使用することGETです。たとえば、$100 未満の普通預金口座と当座預金口座のリストを取得するとします。GET次に、 toのようなものを呼び出します/accounts/searchResults?minBalance=0&maxBalance=100。GETただし、リクエストの最大長に収まらない複雑なオブジェクトを検索パラメーターで使用する必要がある場合はどうなりますか。
私の最初の考えは を使用することでしたがPOST、もう少し考えた後PUT、サーバーの状態を変更していないため、おそらく である必要がありますが、私の(限られた)理解から、私は常にPUTリソースを更新しPOST、リソース (この検索結果の作成など)。この場合、どちらを使用する必要がありますか?
いくつかの情報を提供する次のリンクを見つけましたが、さまざまな場合に何を使用すべきかが明確ではありませんでした。