ルックアップAPIエンドポイントがあるとします。応答は成功する可能性があります(200)、見つからない(404)...と私のケースでは複数の項目が見つかりましたはエラーです。複数の項目を記述できるHTTPステータスコードは、エラーが最も良いと判断されましたか?API:複数のアイテムに使用するHTTPステータスコードにエラーが見つかりましたか?
答えて
これは興味深い問題です。ルックアップのためのAPIコールで、複数の結果が返ってくる場合は、実際に200
の結果配列を持つコードが必要です。
しかし、リクエスト自体が間違ってフォーマットされているため、クライアントが何を求めているのかが明確でない場合は、400
という悪いリクエストのHTTPステータスコードを送信することができます。
また、207
マルチステータスコードをご覧ください。これは、実際にあなたが探しているものに近い場合があるためです。おそらくリクエストと応答の例を提供できますか?
ルックアップAPIエンドポイントがあるとします。応答は成功(200)、見つからない(404)、私の場合、複数の項目が見つかった場合はエラーです。複数の項目を記述できるHTTPステータスコードは、エラーが最も良いと判断されましたか?
サーバーは要求を完全に理解していますが、契約の一部を満たす表現を提供することはできません。
したがって、正しいエラーコードは5xxの範囲になります。
ステータスコードの5xx(サーバーエラー)クラスは、サーバーがエラーが発生しているか、要求された方法を実行できないことをサーバーが認識していることを示します。
専門の5xxエラーコードのどれも、あなたが使うべきではありません収まる場合500
500(内部サーバーエラー)状態コードは、サーバーが要求を満たすことを妨げる予期しない状態に遭遇したことを示しています。
マイケルクロパットは、Stop Making It Hardのオプションを列挙する良い仕事をしました。彼は私たちが唯一の我々は区別502不正なゲートウェイ(上流問題を)持っていた場合は、時間をデバッグする代わりに500内部サーバーエラーでそれを混乱の時間時に時間を保存しているだろうあなたを伝えることができますについて502
この興味深い観察を行います。
「ゲートウェイ」の最新の定義は、RFC 7230 section 2.3(仲介者)に記載されています。
「ゲートウェイ」(a.k.a「リバースプロキシ」)は、アウトバウンド接続のオリジンサーバーとして機能しますが、受信した要求を変換し、インバウンドを別のサーバーに転送します。ゲートウェイは、レガシーまたは信頼できない情報サービスをカプセル化し、「アクセラレータ」キャッシングを使用してサーバーのパフォーマンスを向上させたり、複数のマシン間でHTTPサービスを分割またはロードバランシングするためによく使用されます。
オリジンサーバーに適用されるすべてのHTTP要件は、ゲートウェイの発信通信にも適用されます。ゲートウェイは、この仕様の範囲外にあるHTTPへの私的拡張を含む、任意のプロトコルを使用してインバウンドサーバーと通信します。
非常に大雑把に言えば、500は「私の悪い」、502/504がどこかで指を指しています。
私の場合はどのようなエラーコードを使用しますか?
説明した内容に基づいて、500です。これは、「このリソースが壊れています」という意味です。
妥当な代替案は502です。これは、「このリソースの上流表現は壊れています」に適しています。
いずれの場合でも、エラーの聴衆は内部的です(クライアントは問題を解決するために何もできません)。サポートチームはおそらくステータスコードの区別に役立つものはありません。問題が上流にあるという事実は、クライアントにとって興味のない実装の詳細なので(500ものすべて)、合理的に主張することもできます。また、APIが受信した要求を変換してインバウンドを別のサーバーに転送するゲートウェイであるため、問題はAPIにではなくストアにあるため、ステータスコードを使用する必要があります。
これは、「私たちがAPIで持っているエラーの数を追跡するとき、この種の問題を例外と内部的に区別したいのですか?
権限のあるガイダンスが欠落しているようです。メソッドを選択し、正当性を文書化して出荷します。
'Stop Making It Hard'リファレンスは素晴らしいです、どのようなエラーコードがあなたは私の場合に使う? – HPM
- 1. 複数のコントローラタイプがc#web api 2.0でエラーが見つかりました
- 2. .net httpプロキシを使用したリクエスト404エラーが見つかりません
- 3. エラー:「この行に複数の注釈が見つかりました」
- 4. VBA:エラー3265 - 「このコレクションにアイテムが見つかりません」
- 5. WEB APIルーティングエラー異なるAPIパスで要求に一致する複数のアクションが見つかりました
- 6. HTTPステータスコードにカスタム理由を使用して、REST APIのエラーを区別することはできますか
- 7. HTTPエラー404.13 - 見つかりません
- 8. Angular2エラー - サーバーが見つかりませんでした... http:// localhost:1595/angular2/http
- 9. リクエストに一致するアクションが複数見つかりましたか?
- 10. カスタムAPIの応答ABPフレームワークを使用したHTTPステータスコード
- 11. Drupal AJAX HTTPエラーが発生しました。 HTTPステータスコード:200
- 12. ArangoDB HTTP APIのリターンコードは、常にHTTPステータスコードと同じですか?
- 13. HTTPエラー404.0 - 見つかりませんでしたAngularJS with IIS
- 14. URLに一致する複数のコントローラタイプが見つかりました。 ASP.Net MVC
- 15. 使用したHTTPステータスコードのような
- 16. エラー:XHRエラー(404が見つかりません)loading angular2/http
- 17. 複数のメソッド '-setTransform:'が見つかりました
- 18. va_arg()を使用して引数を解析中にgcc-6.1.0にのみエラーが見つかりました
- 19. c#OWIN Web API - 要求に一致する複数のアクションが見つかりました:GET
- 20. curl_multiを使用して複数のURLからHTTPステータスコードを取得しますか?
- 21. コードの実行中にエラーが見つかりました
- 22. '関数エラーが見つかりませんでした
- 23. MIMEタイプが見つからない場合に、(もしあれば)httpステータスコードが返されますか?
- 24. "name"にアクセスするHTTPエラー404が見つかりません(サーブレット)
- 25. pageradapterページインデックスが画面上に複数のページで見つかりました。
- 26. Python 3 .csvファイル内に複数の単語が見つかりました
- 27. クラス 'App \ Http \ Controllers \ Response'が見つかりませんでした。エラー:Laravel
- 28. ALPHANUMERIC - Pythonに見つからない数値が見つかりました
- 29. データテーブルに重複が見つかりました
- 30. テーブル内に重複が見つかりました
適切なHTTPステータスコードを選択するための[guide](http://racksburg.com/choosing-an-http-status-code/) –