82

2 つの依存関係を持つサービスを作成しようとしています。依存関係の 1 つは内部で管理されますが、2 つ目はサードパーティ API への外部 http アウトバウンド呼び出しが必要です。このシーケンスでは、リソースを更新してから、http アウトバウンド コールを実行する必要があります。

私の質問は、2 番目のステップで失敗した場合、返される正しい http ステータス コードは何ですか?

応答は、発生したエラーを説明するメッセージ本文を含む 424 または 500 にする必要がありますか?

  • 424: Method Failure - メソッドの実行の一部が失敗し、メソッド全体が中止されたため、そのスコープ内の特定のリソースでメソッドが実行されなかったことを示します。
  • 500内部サーバーエラー。
4

3 に答える 3

81

あなたが尋ねている障害は、サービス自体の内部で発生したものであるため、5xx ステータス コード範囲が正しい選択です。503 Service Unavailable は、あなたが説明した状況に最適です。

5xx コードは、リクエストが問題なく実行されたにもかかわらず、サーバーでリクエストの実行に何らかの問題が発生したことをクライアントに伝えるためのものです。一方、4xx コードは、クライアントが何か間違ったことをしたことをクライアントに伝えるために使用されます (そして、サーバーは問題ないことを感謝します)。HTTP 1.1 仕様のセクション 10.4 および 10.5 では、4xx および 5xx コードのさまざまな目的について説明しています。

ステータス コード 424 はWebDAV 標準で定義されており、クライアントが実行内容を変更する必要がある場合に使用されます。ここでは、サーバーには問題が発生していません。

于 2013-09-10T05:33:52.690 に答える
46

2 番目の操作は外部サービス コールなので、状況に応じて 502 または 504 を選択する必要があります。

引用元: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3

10.5.3 502 不正なゲートウェイ

サーバーは、ゲートウェイまたはプロキシとして機能しているときに、要求を実行しようとしてアクセスしたアップストリーム サーバーから無効な応答を受け取りました。

10.5.4 503 サービスを利用できません

サーバーの一時的な過負荷またはメンテナンスのため、サーバーは現在リクエストを処理できません。つまり、これは一時的な状態であり、少し遅れて緩和されるということです。既知の場合、遅延の長さは Retry-After ヘッダーで示される場合があります。Retry-After が指定されていない場合、クライアントは 500 応答の場合と同様に応答を処理する必要があります。

  Note: The existence of the 503 status code does not imply that a
  server must use it when becoming overloaded. Some servers may wish
  to simply refuse the connection.

10.5.5 504 ゲートウェイ タイムアウト

ゲートウェイまたはプロキシとして機能しているサーバーが、URI (HTTP、FTP、LDAP など) で指定されたアップストリーム サーバーまたは完了を試みる際にアクセスする必要があるその他の補助サーバー (DNS など) からタイムリーな応答を受信しませんでした。リクエスト。

  Note: Note to implementors: some deployed proxies are known to
  return 400 or 500 when DNS lookups time out.
于 2015-12-29T13:21:10.930 に答える