[解決済み] REST APIのエラーリターンに関するグッドプラクティス【終了しました
質問
REST APIからエラーを返すときのグッドプラクティスについてガイダンスを探しています。私は新しいAPIに取り組んでいるので、今すぐどのような方向にも持っていくことができます。私のコンテンツタイプは、現時点ではXMLですが、将来的にはJSONをサポートする予定です。
例えば、クライアントが新しいリソースを追加しようとしたが、ストレージのクォータを越えてしまった場合などです。私はすでにHTTPステータスコードで特定のエラーケースを処理しています(401は認証、403は承認、404は単純に悪いリクエストURI)。HTTPのエラーコードに目を通しましたが、400から417のどれもがアプリケーション固有のエラーを報告するのには適していないようです。だから最初は、アプリケーションのエラーを200 OKと特定のXMLペイロード(つまり、もっと払ってくれれば、必要なストレージが手に入る!)で返そうかと思ったのだが、考えるのをやめたら、それは石鹸みたいだ(/shrug in horror)。それに、あるものはhttpステータスコード駆動で、他のものはコンテンツ駆動なので、エラーレスポンスを異なるケースに分割しているような気がするのです。
では、業界の推奨事項は何でしょうか?グッドプラクティス(その理由を説明してください!)、またクライアントの視点から、REST APIでのどのようなエラー処理がクライアントコードの生活を楽にするのでしょうか?
どのように解決するのですか?
<ブロッククオートそこで最初は、アプリケーションのエラーを200 OKと特定のXMLペイロード(つまり、もっとお金を払えば、必要なストレージが手に入る!)で返そうかと思いましたが、考えるのをやめて、石鹸のようです(/恐ろしさに肩をすくめる)。
私なら、本当に何も問題がない限り、200を返しません。以下より RFC2616 200は「リクエストに成功しました」という意味です。
クライアントのストレージのクォータが(何らかの理由で)超過している場合は、403(Forbidden)を返すことにしています。
<ブロッククオートサーバーは要求を理解しましたが、要求を満たすことを拒否しています。認証は役に立ちませんし、リクエストは繰り返してはいけません(SHOULD NOT)。リクエストメソッドがHEADでなく、サーバーがリクエストが遂行されなかった 理由を公開することを望む場合、エンティティに拒否の理由を記述するべきで ある[SHOULD]。サーバーがこの情報をクライアントに提供することを望まない場合、代わりに ステータスコード404(Not Found)を使用することができる。
これはクライアントに、リクエストはOKだったが失敗したことを伝えるものです(200ではできないことです)。また、レスポンスボディで問題(とその解決策)を説明する機会にもなります。
その他、具体的にどのようなエラー状況を想定していましたか?
関連
-
[解決済み] Outlook.comでは、Webhook/push通知のサポートはありますか?
-
[解決済み] SOAPとRESTの比較(相違点)
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み】メッセージキューとウェブサービスは?[をご紹介します。]
-
[解決済み】JAX-RS - JSONとHTTPステータスコードを一緒に返すには?
-
[解決済み】P99のレイテンシーって何ですか?
-
[解決済み] WSDL、SOAP、RESTとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PeopleSoftで標準的なWebサービスAPIが利用可能ですか?
-
[解決済み] Spring RestTemplateクライアント - 接続拒否例外
-
[解決済み] Outlook.comでは、Webhook/push通知のサポートはありますか?
-
[解決済み] REST APIのエラーリターンに関するグッドプラクティス【終了しました
-
[解決済み】P99のレイテンシーって何ですか?
-
[解決済み】REST API 404。不正な URI、またはリソースの欠落?
-
[解決済み】APIとウェブサービスの比較【終了しました
-
[解決済み] セキュアなWebサービス:REST over HTTPS vs SOAP + WS-Security。どちらが優れているか?[クローズド]。
-
[解決済み] なぜSOAPベースのサービスではなく、RESTを使うのか?[クローズド]
-
[解決済み] Web APIとWebサービスの違いは何ですか?