2016-09-26 3 views
2

ルックアップAPIエンドポイントがあるとします。応答は成功する可能性があります(200)、見つからない(404)...と私のケースでは複数の項目が見つかりましたはエラーです。複数の項目を記述できるHTTPステータスコードは、エラーが最も良いと判断されましたか?API:複数のアイテムに使用するHTTPステータスコードにエラーが見つかりましたか?

+0

適切なHTTPステータスコードを選択するための[guide](http://racksburg.com/choosing-an-http-status-code/) –

答えて

0

これは興味深い問題です。ルックアップのためのAPIコールで、複数の結果が返ってくる場合は、実際に200の結果配列を持つコードが必要です。

しかし、リクエスト自体が間違ってフォーマットされているため、クライアントが何を求めているのかが明確でない場合は、400という悪いリクエストのHTTPステータスコードを送信することができます。

また、207マルチステータスコードをご覧ください。これは、実際にあなたが探しているものに近い場合があるためです。おそらくリクエストと応答の例を提供できますか?

0

ルックアップ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で持っているエラーの数を追跡するとき、この種の問題を例外と内部的に区別したいのですか?

権限のあるガイダンスが欠落しているようです。メソッドを選択し、正当性を文書化して出荷します。

+0

'Stop Making It Hard'リファレンスは素晴らしいです、どのようなエラーコードがあなたは私の場合に使う? – HPM

関連する問題