4

重複の可能性:
無効なデータの REST 応答コード

次の REST リソースを用意します。

POST /user/{primary_key}

リソースは、「ADD/UPDATE」操作のように機能することを意図しています。これは、次の用途に使用できることを意味します。

  • 新しいユーザーを作成する
  • 既存ユーザーの情報を更新する

クライアントが新しいユーザーを作成したい場合は、いくつかの情報が必要です:

POST ユーザー/{pimary_key}
ペイロード:
 - ユーザー名 - (一意である必要があります)
 - パスワード

クライアントが単に既存のユーザーを更新したい場合、呼び出しには主キーと新規/変更された情報のみを含める必要があります。例えば:

POST ユーザー/{pimary_key}
ペイロード:
 ・好きなハンバーガーの種類

この状況では、無効なクライアントからのいくつかの要求が発生する可能性があります。

  • usernameCONFLICT - クライアントは、別のユーザーによって既に使用されている値に変更しようとしている既存のユーザーを更新します。
  • MISSING INFORMATION - クライアントは、ユーザー名やパスワードなどの必要な情報を含めずに新しいユーザーを作成しようとします。

これらの場合に返される正しい HTTP 応答コードは何ですか?

本当にありがとう!

4

2 に答える 2

13
  1. 作成されたユーザーのコード 201、非常に明白
  2. 不正な入力パラメータの場合は 400 が最適です。Google API はそれを使用します
  3. あなたのような相反する状況には409が最適だと思われます

作成と編集を分けて、作成には POST、更新には PUT という異なる方法を使用することをお勧めします。ユーザーが何かを変更しようとしたときにタイプミスがあった場合はどうなるでしょうか? エラー表示したほうがいい

于 2013-01-02T19:33:05.987 に答える
6

以下は、RESTful 操作に対する「典型的な」HTTP 応答の適切な表です。

その表から、POST 操作に推奨されるものは次のとおりです。

200 (OK) - if an existing resource has been updated
201 (created) - if a new resource is created
202 (accepted) - accepted for processing but not been completed (Async processing)

301 (Moved Permanently) - the resource URI has been updated
303 (See Other) - e.g. load balancing

400 (bad request) - indicates a bad request
404 (not found) - the resource does not exits
406 (not acceptable) - the server does not support the required representation
409 (conflict) - general conflict     
412 (Precondition Failed) e.g. conflict by performing conditional update
415 (unsupported media type) - received representation is not supported

500 (internal server error) - generic error response
503 (Service Unavailable) - The server is currently unable to handle the request
于 2013-01-02T18:51:20.397 に答える