我正在重构一些SOAP和REST服务。 SOAP服务响应请求的实体,而没有其他。例如,GET返回请求的实体的XML表示。对于错误,他们会抛出标准异常。 REST服务具有相同的行为。我从SOAP服务中返回什么以及如何返回?
我修改REST服务扔WebApplicationExceptions并返回相应的HTTP代码(例如HTTP 201成功后,而不是总是返回HTTP 200)。我对SOAP不熟悉,所以我想问什么,如果有的话,需要改变。
什么是SOAP各地的最佳实践:成功和错误的情况下
1)返回HTTP代码(如返回POST /创建请求HTTP 201)?如果是这样,怎么样?
2)抛出异常?你是否抛出所有的错误,包括服务调用者发送的无效数据?它应该是一个SOAP异常还是一个WebApplicationException?
我期待着您的反馈。
感谢您的反馈。有几个问题我无法从您的回复中回答。你是否会抛出所有错误的例外(例如传入数据时失败的守卫子句)?而且,你会抛出SOAP异常还是WebApplicationException? – TERACytE 2011-03-17 17:12:42
您返回给客户端的所有异常都应该是SoapException类型。什么构成例外,什么不是设计决定。例如,如果SOAP请求包含主键并且在数据库中找不到该键,那么作为SOAP响应中标记的错误可能更合适。另一方面,如果数据库连接处于关闭状态,则可能值得使用SOAP异常。它类似于一个方法:为了指示错误,你可以抛出一个异常或返回一个表示错误的响应值,并留给客户端解释。 – Bleaourgh 2011-03-17 17:18:45
+1特别是#2。返回一个无SOAP的500(如果输入的XML格式错误,但有时只返回一个SOAP异常),Microsoft SharePoint将“不同”。最令人讨厌的是。 – 2011-03-17 17:29:20