我正在重构一些SOAP和REST服务。 SOAP服务使用请求的实体进行响应,而不是其他任何内容例如,GET返回所请求实体的XML表示。对于错误,他们抛出标准异常。 REST服务具有相同的行为。
我正在修改REST服务以抛出WebApplicationExceptions并返回正确的http代码(例如,http 201代表成功的帖子,而不是总是返回http 200)。我不熟悉SOAP,所以我质疑什么,如果有的话,需要改变。
SOAP的最佳实践是什么:
1)为成功和错误案例返回http代码(例如,为POST /创建请求返回http 201)?如果是这样,怎么样?
2)抛出异常?您是否抛出所有错误,包括服务调用者发送的无效数据?它应该是SOAP异常还是WebApplicationException?
我期待着您的反馈。
答案 0 :(得分:2)
SOAP的功能独立于传输层。虽然您没有使用它,但SOAP能够通过SMTP等不同协议发送。因此,最佳实践将决定
1)您不应该在返回消息中返回HTTP代码。事实上,你可能无法做到。成功/错误消息通常将在自定义SOAP标头或响应主体中定义(响应主体方法更简单)。
2)Web服务抛出的每个异常都应该是SOAP异常。这样,客户端,无论它是什么,都可以解释SOAP异常并采取适当的行动。