SOAP服务器实现错误通知的“最佳实践”是什么?

时间:2010-06-22 09:19:14

标签: ruby-on-rails soap soap-client

我正在使用Ruby on Rails开发一些SOAP Web服务,并考虑如何处理泛型故障。这些通用错误适用于服务中的所有方法,包括以下内容: -

  • 缺少请求元素
  • 缺少身份验证元素(自定义)
  • 无效的身份验证详细信息

我可以在调用相关方法之前拦截控制器中的这些错误并做出适当的响应。我的问题是从客户的角度来看哪个实施最容易管理。我处理这些错误的选项似乎如下。

  1. 引发异常并让SOAP服务生成SoapFault。这很好,除了我很少(没有)控制SOAP错误中包含的消息的结构。
  2. 返回带有约定数据结构的Http 400响应,以指示错误消息。但是,这个结构不会在WSDL中定义。
  3. 在所有响应中包含Status元素,无论是否成功,并且该status元素包含代码和错误数据数组(包括错误消息)。
  4. 选项三似乎是最好的解决方案,但也是最容易实现的,因为ROR中的Web服务实现使我无法以通用方式实现它,并且每个方法都负责检查检查和呈现的结果适当的回应。不可否认,这将是一个单一的函数调用,并在失败时返回,但它依赖开发人员记住这样做,因为我们添加了更多选项。

    我很欣赏大多数ROR开发人员会说这应该作为REST服务实现,我同意,事实上我们已经有REST服务来实现这一点,但SOAP在企业界的传播,以及令人印象深刻的工具支持手段我们必须提供SOAP服务以保持竞争力。

    根据您的经验,客户端要处理的最简单的实现是什么,这取决于客户端进程的库/语言。

1 个答案:

答案 0 :(得分:0)

SoapFault是表示错误的首选方式。 SoapFaults可以在其<detail>元素中包含其他信息。

SoapFault优于某些状态元素的优点是调用者可以使用标准异常处理,而不是检查某些状态字段。