新しいWebサービスを開発しており、soap応答でエラーを返すための「ベストプラクティス」を検討しています。
すべての応答にプロパティとして含まれるエラー応答オブジェクトの作成を検討していました。しかし、これは少し重いように思われ、SOAPヘッダーを使用してこの情報を運ぶことが可能かどうか疑問に思っていますか?通常、SOAPを使用してカスタムエラーをどのように処理しますか?
新しいWebサービスを開発しており、soap応答でエラーを返すための「ベストプラクティス」を検討しています。
すべての応答にプロパティとして含まれるエラー応答オブジェクトの作成を検討していました。しかし、これは少し重いように思われ、SOAPヘッダーを使用してこの情報を運ぶことが可能かどうか疑問に思っていますか?通常、SOAPを使用してカスタムエラーをどのように処理しますか?
Soapはすでにエラー情報にカスタムヘッダーを使用しています。サーバー側で例外をスローするだけで、クライアント側でSoapExceptionとして例外が発生します。
例外メッセージ/情報をより詳細に制御したい場合は、サーバー側でSoapExceptionsをスローできます。
編集:リクエストとともに追加情報については、カスタム石鹸ヘッダーを使用できます。これは、認証にカスタムsoapヘッダーを使用したCodeProjectの記事の例ですが、カスタムsoapヘッダーは、必ずしもエラー状態ではない追加情報(ビジネスロジック情報の場合もあります)の送信など、他の目的にも使用できます。
SOAPFaultは、エラーおよびステータス情報を保持するために使用され、サーバーはHTTPヘッダーで500を返し、それを障害として示します。
W3.orgの仕様を参照してください
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507
サードパーティ向けに明確に文書化する限り、soapヘッダーに配置するか、結果の要素内に配置することで、独自の情報トークンを設計できます。ただし、これはエラーを発生させるための標準的な方法ではありません。
私は過去に複雑な操作に同様の手法を使用しました。特に、(複数の?)エラーの説明とエラーコードが必要な場合。
SOAP ヘッダーは帯域外の情報用であり、エラー メッセージには使用しないでください。さらに、次の理由により、soap ヘッダーを SOAP 応答で使用しないでください。
そして、はい、一部の WS-* 標準では、応答に SOAP ヘッダーが記述されていることを知っています...
そう、
応答オブジェクトがないほど深刻なエラーには、ソープ フォールトを使用します。警告および情報メッセージの応答にステータス トークンを追加します。