6

コレクションの 1 つが (UX の理由で) 制限されている安らかなサービスがあります。この場合、上限は 25 アイテムです。それを超えると、追加する前にリソースを削除する必要があります。クライアントが提出した場合の例として:

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

そして、ものには25未満のものがあります:

200 OK

if > 25 個のもの:

???

DELETE http://somesite.com/api/v2/stuff/:id

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

200 OK

これに最適なコードは何ですか? ストレート400?409 コンフリクト?429? どれもまったく正しくないようです..

4

1 に答える 1

8

409 を使用します。 httpbis セクション 7.5.8から:

「リソースの現在の状態と競合するため、リクエストを完了できませんでした。このコードは、ユーザーが競合を解決してリクエストを再送信できると予想される状況でのみ許可されます。ペイロードには十分なユーザーが競合の原因を認識するための情報。」

あなたの場合、リソースはによって識別されるものhttp://somesite.com/api/v2/stuffであり、POST現在の状態との競合のためにリクエストを完了できません(つまり、すでに上限に達しています)。応答では、既存のメンバーの 1 つを削除するか、制限を増やすか、または他のアクションを実行するのに十分な情報 (できればリンク) をユーザーに提供します。その後、元のリクエストを再送信できます。

于 2012-11-19T22:53:19.510 に答える