2011-08-08 8 views
1

私はAPIを構築していますが、APIのステータスを返すAPIでメソッドを持つ価値があるのでしょうか? APIにはステータスメソッドが必要ですか?

それともこの無意味であり、そのAPIのユーザーのジョブはちょうど彼らが必要とするメソッドへの呼び出しを行うことができるように、それは、ネットワークの問題のために何も返さない場合、彼らは、必要に応じてそれを扱いますか?

答えて

5

ステータスを返すことは非常に便利だと思います。一方では、「生きている」よりも多くのステータスを提供することができますし、APIをより強力にすることができます。一方、それはユーザーにとってより便利です。 )。

しかし、あなたのWebServiceが、ネットワークの問題のために、全く利用できない場合、その後、もちろん、それはその例外をキャッチするために、ユーザー次第です。しかし、それはポイントではないと思います。あなたのAPIで制御できるものではありません。

0

標準のHTTP応答ステータスコードで何が問題になっていますか? 503 Service Unavailableが気になります。 HTTPクライアントは、あなたのAPIに特別なコードを書くことなく、すでにそれを処理できるはずです。サービスはそうが頻繁に利用できなくすることで、クライアントがそれを発見することが高価である場合は、サーバのために、それは別の「ヘルスチェック」URLを持っていることが適切であるかもしれない安い

さて、それ素早くできますクライアントにサービスが利用可能であることを知らせる(ヘルスチェックURLのGETの時点で)。

0

ほとんどの場合は必要ありません。少なくとも単純かどうかを返します。もう1つのメソッドを呼び出さなければならないため、クライアントコードは複雑になります。あなたのクライアントがサービスからアクティブ=真を受け取ったとしても、次の有用なコールは引き続き失敗する可能性があります。クライアントが通常の実行中に必要な呼び出しを行い、ネットワーク、タイムアウト、HTTPエラーを正しく処理できるようにします。そのような場合の非常に有用なパターンは、Circuit Breakerと呼ばれます。ステータスチェックが有用である可能性がある

の理由:すべての通常のコールが高価であるとみなされた場合

  • が最初の呼び出し軽量ステータスチェック方法で利点があるかもしれません(ただ高価な呼び出しを避けるため)。
  • サービスはさまざまなステータスを持つことがあり、クライアントはこれらのステータスに応じて動作を変更できます。

またXMPPのようなステートフルなプロトコルに探して価値があるかもしれません。

2

無駄です。

それが返す情報は完全に時代遅れのステータス返信コールがディスパッチされた後、サービスが右失敗する可能性があるため、それがあなたに返却された瞬間です。

また、着信要求のロードバランシングを行い、ステータス要求が失敗したノードにルーティングされる場合、その応答(またはその不足)はクライアントにAPIサービス全体の問題のように見えます。その間、他のすべてのノードは、幸いなことに要求を処理することができます。今度はクライアントがAPIサービス全体がダウンしていると思うでしょうが、ロードバランサが失敗したノードを削除したり再起動したと仮定しても、それ以降のリクエストは正常に機能します。アプリケーションの要求から返さ

HTTPステータスコードの可用性を示すのが正しい方法です。あなたのクライアントはもちろん、それらを許容して処理するようにコーディングする必要があります。

関連する問題