0

私はRubyonRailsを使用していくつかのSOAPWebサービスを開発しており、一般的な障害を処理する方法を検討しています。これらの一般的なエラーは、サービス内のすべてのメソッドに適用され、次のものが含まれます:-

  • 不足しているリクエスト要素
  • 認証要素がありません(カスタム)
  • 無効な認証の詳細

関連するメソッドを呼び出す前に、コントローラー内でこれらのエラーをインターセプトして、適切に応答できます。私の質問は、クライアントの観点からどの実装を管理するのが最も簡単かということです。これらのエラーを処理するための私のオプションは次のようです。

  1. 例外を発生させ、SOAPサービスにSoapFaultを生成させます。これは、SOAP障害に含まれるメッセージの構造をほとんど(まったく)制御できない場合を除いて、問題ありません。
  2. エラーメッセージを示すために、合意されたデータ構造を持つHttp400応答を返します。ただし、この構造はWSDL内では定義されません。
  3. 成功したかどうかに関係なく、すべての応答にStatus要素を含め、そのstatus要素にコードとエラーデータの配列(エラーメッセージを含む)を含めます。

オプション3は最善の解決策のように見えますが、RORでのWebサービスの実装により一般的な方法でこれを実装できなくなり、各メソッドがチェックの結果をチェックして適切な応答をレンダリングする責任を負うため、実装するのが最もエラーになりがちです。 。確かに、これは単一の関数呼び出しであり、失敗すると返されますが、オプションを追加するときにこれを行うことを覚えておくのは開発者に依存しています。

ほとんどのROR開発者がこれをRESTサービスとして実装する必要があると言ってくれることを感謝します。実際、これを行うためのRESTサービスはすでにありますが、企業の世界ではSOAPが普及しており、その優れたツールサポートにより、競争力を維持するためにSOAPサービスを提供する。

あなたの経験では、クライアントが処理するのに最も簡単な実装は何であり、これはクライアントプロセスのライブラリ/言語によって異なりますか。

4

1 に答える 1

0

SoapFault は、エラーを示すための推奨される方法です。SoapFaults は、<detail>要素に追加情報を含めることができます。

一部のステータス要素に対する SoapFault の利点は、呼び出し元が一部のステータス フィールドをチェックする代わりに、標準の例外処理を使用できることです。

于 2010-06-22T09:22:53.210 に答える