何のリソースが作成されていないとき、私はPOSTのためにどのようなHTTPステータスコードを返す必要がありますか?

CYP:

私は私のサーバー(usign Javaと春)に画像を掲示しています。

物事のカップルが発生する可能性があります:

  • すべてがうまくいけば、私は返す200と画像ID。
  • 画像は、(ファイルシステムに保存することはできませんSaveFileException)。
  • データベースは新しいURLで新しいイメージのレコードを更新することはできません(DatabaseException)。
  • または投げますIOException

要するに、私はイメージを作成/保存することはできません。

私は何HTTPコードを返す必要がありますか?

私は複数のコードとに応じて複数のメッセージを返す必要がありますかException

cassiomolin:

まず第一に、私はステータスコードを理解し、クライアントの要求を満たすためにサーバの試みの結果を示すことを意味していることを強調表示してみましょう。

すべてがうまくいけば、私は返す200と画像ID。

罰金のようですが、私はあなたが返すように助言する201とともにLocation代わりのヘッダー。引用RFC 7231に関するPOST方法:

1つ以上のリソースが正常に処理の結果、オリジンサーバ上に作成されている場合POST、要求を、オリジンサーバが送るべき201含む(作成)応答Location作成プライマリ・リソースの識別子を提供するヘッダ・フィールドと説明表現を新しいリソース(複数可)を参照しながら要求の状態。

一緒に201Locationヘッダは、新しく作成されたリソースがある場所を示すことを意味します。いかなる場合Locationヘッダが設けられていない場合、クライアントは、リソースが有効なリクエストURIによって識別されると仮定すべきです。

6.3.2。作成された201

201(作成した)ステータスコードは、要求が満たされた1つ以上の新しいリソースが作成さをもたらしていることを示しています。要求によって作成されたプライマリ・リソースのいずれかによって識別されLocationない場合、応答のヘッダフィールドまたはLocationフィールドが有効な要求URIによって、受信されません。[...]


クライアントのエラー

クライアントは、新しい要求を実行し、問題を解決することはできますか?もしそうなら、中にステータスコードを選択4xx範囲:

6.5。クライアントエラーの4xx

4xxステータスコードの(クライアントエラー)クラスは、クライアントが誤りを犯しているように見えることを示しています。応答するときを除きHEAD、要求、サーバはエラー状況の説明を含む表現を送るべきで、それが一時的または恒久的な条件があるかどうか。これらのステータスコードはどんなリクエストメソッドに適用されます。

マイケルKropatは非常に便利なまとめフローチャートの一連のあなたにいくつかのinsighstsを与える可能性があります。最も適切かを決定するために、次の表を参照してください。4xxステータスコードを:

4xxのステータスコードを選択します

いくつかの有効なオプションは、エラーの原因に応じて、以下のとおりです。

6.5.11。413ペイロードが大きすぎます

The 413 (Payload Too Large) status code indicates that the server is refusing to process a request because the request payload is larger than the server is willing or able to process. [...]

6.5.13. 415 Unsupported Media Type

The 415 (Unsupported Media Type) status code indicates that the origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource. The format problem might be due to the request's indicated Content-Type or Content-Encoding, or as a result of inspecting the data directly.

6.5.1. 400 Bad Request

The 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).


Server error

If the error was caused by the server, then a status code in the 5xx range will be accurate:

6.6. Server Error 5xx

The 5xx (Server Error) class of status code indicates that the server is aware that it has erred or is incapable of performing the requested method. Except when responding to a HEAD request, the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition.

See the following flowchart:

5xxのステータスコードを選択します

I would suggest 500:

6.6.1。500内部サーバーエラー

500(内部サーバーエラー)ステータスコードサーバーが要求を満たすことを妨げる予期しない状態に遭遇したことを示しています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=137248&siteId=1