2016-04-23 27 views
0

サービスhttp://myservice.dev:8080/resource/get/idは別のサービスhttp://otherservice.dev:8080/resource/get/nameを呼び出しているとします。 2番目のサービスがダウンして応答しない場合、呼び出し元のサービスがクライアントに返す適切な応答は何ですか?要求が第2のサービスを呼び出すことが重要であると仮定する。HTTP:ダウンストリーム要求の失敗に対する適切な応答

私は504ゲートウェイタイムアウトを考えていたが、これは上流のゲートウェイにあるように聞こえる...

+1

も小さな明確化:502不正なゲートウェイであり、504はゲートウェイタイムアウト – Edgar

+0

おかげです。あなたのコメントごとに更新されました。 – Matt

答えて

1

TL; DRはい、504はほとんどの場合に適切であろうが

upstreamサーバーの定義が重要です:

コンピュータネットワークでは、アップストリームサーバーは別のサーバーにサービスを提供するサーバーを指します。 1

だから、あなたが言及した場合には、そう、「otherserviceは」上流サーバーと見なすことができるので、502と504のようなHTTPレスポンスコードが適切であろう。

あなたのユースケースによっては、アップストリームサーバーについてクライアントに情報を公開することはおそらく賢明ではありません。いくつの他のサービスが依存関係であるかは、クライアントにとっては無関係かもしれません。特に、将来再設計や再設定を行うと、「otherservice」が「myservice」の一部になる可能性があります。したがって、失敗には500(Internal Service Error)または503(Service Unavailable)と適切にタグ付けする必要があります。

1https://en.wikipedia.org/wiki/Upstream_server

+0

私は、他のサービスが下流とみなされるという印象を受けています。ゲートウェイは上流のサーバーになります(この場合、最高のサーバーは他のサービスを呼び出すサービスです)。私たちは通常、tomcatボックスの上流にゲートウェイを設置しています。私は500がこの場合には最良の応答かもしれないと思います。 – Matt

関連する問題