REST APIでビジネスロジックを実施する際のデファクト/従来の慣行と、使用されるHTTPステータスコードは何ですか?REST:DELETEおよびビジネスロジック条件
たとえば、Playerエンティティとチームエンティティがあるとします。チームは任意の数のプレイヤーを持つことができます。
私のビジネスロジック(現時点では)が、すべてのプレーヤーが最初にチームから明示的に削除されるまで、チームが削除されないようにしているとします。
あなたは
DELETE http://api.foo.com/teams/15
を実行し、それはまだそれに関連付けられているプレーヤーを持っている場合は、HTTP 409(競合)、またはHTTP 412(前提条件が失敗)を返すでしょうか?オプティミスティックなロック条件を示すために409を使用する方が好きなので、より論理的です。
おそらく、ビジネスロジックの条件をREST APIにも適用する必要がありますか?誰かが
DELETE http://api.foo.com/teams/15
を実行した場合つまり、そのちょうどすべてのプレーヤーを削除して、自動的にチームを削除するべきではないのですか? UIインターフェイスよりもREST APIが少し「低レベル」または「未処理」として認識されるため、DELETEを実行できるようにするのがより一般的ですか?
最後に、リソースURI内のクエリのparamについてどのような:
DELETE http://api.foo.com/teams/15?force=true
を示し、「はい、私はこれはまだチームの選手で許可されないことを知っているが、やりますそれはとにかく "。
ここでの考え方は、チームを削除することは重大な影響を与える重大な操作であり、エンドユーザーが本当に望んでいると確信している場合にのみ行うことです。
言い換えれば、あなたは手持ちしていますか(「確かですか?」というエラーコードを使用していますか?これがUIでのみ実行されるべきか、REST APIで実行されるべきか、あるいはその両方でなければならないかは、私はあまりよく分かりません。今日、ほとんどの人がこれをどのように解決していますか?