18

私の RESTful API クライアントでは、データベースに既に存在する情報を投稿しようとする場合がありますが、これはエラーではなく、クライアントが無視できるものであり、既存の複製についてユーザーに通知する可能性があります。

今、私は 409 Conflict を返し、応答本文に既に存在するオブジェクトを返しています。次の理由から、それは正しくないと思います。

リソースの現在の状態と競合するため、要求を完了できませんでした。このコードは、ユーザーが競合を解決してリクエストを再送信できると予想される状況でのみ許可されます。応答本文には、ユーザーが競合の原因を認識するのに十分な情報を含める必要があります。理想的には、応答エンティティには、ユーザーまたはユーザー エージェントが問題を解決するのに十分な情報が含まれます。ただし、それは不可能な場合があり、必須ではありません。 restpatterns.org経由

一般的に、409 は PUT に関連しているようです。

この場合の正しい対応は?303 See Other and Location ヘッダーでしょうか?

4

1 に答える 1

15

正しい答えがあるかどうかはわかりません。重複したリソースであるというメッセージとともに 409 を返しています。そのリソースにハイパーメディアも含めます。400 - Bad Request も使用できるようですが、それは一般的すぎるようです。303も動いているのが見えました。エラーがあったことを示したかったので、409 を使用しました。

于 2012-02-23T14:21:00.023 に答える