私は REST アプリケーションを開発しましたが、私のアプリケーションのケースの 1 つは次のとおりです。
ユーザーはサーバー側で操作を行います。サーバーは正常にデータを受け入れますが、データベースとの通信などでエラーが発生します。エラーコードを付けて返したくない 成功コードを付けて送りたいが、エラーを示すボディがある。500、404 などのエラー コードを送信したいのですが、設計は正しいですか? また、どのステータス コードを返す必要がありますか?
私は REST アプリケーションを開発しましたが、私のアプリケーションのケースの 1 つは次のとおりです。
ユーザーはサーバー側で操作を行います。サーバーは正常にデータを受け入れますが、データベースとの通信などでエラーが発生します。エラーコードを付けて返したくない 成功コードを付けて送りたいが、エラーを示すボディがある。500、404 などのエラー コードを送信したいのですが、設計は正しいですか? また、どのステータス コードを返す必要がありますか?
この場合、ある種の 5xx エラーが最も適切です。
ある種の内部サーバー エラーの場合は 500、または
503 サービス利用不可
HTTP/1.1 のすべてのエラー コードについては、こちらを参照してください http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
必要に応じて、残りのサービスのエラー コードを常に返す必要があります。成功コードを返すのに、応答にエラーを入れることは正しいことではありません。
サーバーの操作が、ユーザーの介入なしに (たとえば、何らかのバックグラウンドの「クリーンアップ プロセス」を使用して) そのような DB 障害から回復できる場合、成功ステータス コードは OK である可能性があります。それ以外の場合は、サーバー側のエラー ステータス コード (5xx) を返す方が理にかなっています。
それが役立つかもしれません:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - いくつかの場所であいまいになる可能性がありますが、全体的に読みやすいIMOです。
rfc2616でステータス定義を確認できます
以前は残りのアプリケーションを実装していましたが、常にステータスコードとエラーに関する詳細情報を含むメッセージを返しました。
そして、ええ、データベースの問題については 503 (サービスを利用できません)
この種のトピックについては、stackoverflowで多くの質問があります ...