我最近与几个人进行了几次讨论,讨论业务错误是否应该是SOAP Fault。我们已经在该主题上在线找到了许多讨论,并得出结论,SOAP错误和错误对象均被接受。
现在假设这是正确的,我们喜欢这样的事实:所有错误都以相同的方式处理,并因业务错误而发生SOAP错误。但是,根据规范,由于SOAP Faults必须为HTTP 500,因此我们现在获得了针对业务错误的HTTP 500状态代码:
https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507
如果在处理请求时出现SOAP错误,则SOAP HTTP服务器必须发出HTTP 500“内部服务器错误”响应,并在响应中包含SOAP消息,其中包含指示SOAP的SOAP Fault元素(请参阅第4.4节)。处理错误。
对于SOAP 1.2,我发现了以下内容:
https://www.w3.org/TR/2007/REC-soap12-part2-20070427/#soapinhttp
此SOAP与HTTP的绑定旨在适当地使用HTTP作为应用程序协议。例如,成功的响应将以状态代码200或202发送,而失败则显示为4XX或5XX。
那么我可以安全地假设业务SOAP错误也需要使用HTTP 500吗?
假设您拥有一个包含数百种服务的EBS,并且为所有这些服务运行着监视工具。您的监控如何知道系统错误和业务错误之间的区别?