设计简单 Web 服务的最佳实践及返回代码

3
我正在设计一个WCF服务,它将返回一个响应代码(例如0表示成功,或其他数字表示错误)。此外,Web服务的所有方法都将执行几个常见的验证(例如身份验证apiKey)。
我想知道是否有最佳实践方法来组织和检索这些响应代码和消息。
感谢任何建议。
2个回答

9
理想情况下,不要使用响应代码。成功返回可用内容(或空),失败则抛出异常。

人们处理异常。我们经常忘记查看返回的代码,特别是当99%的时间都是成功时,我们不关心任何响应。所以我们不捕获。然后我们不去检查失败。然后我们花了两天时间追踪一个我们找不到的错误,因为没有抛出异常,而且我们不知道600,000行应用程序中使用了您的Web服务失败的位置……我们甚至不知道是对您的Web服务的调用失败了。只知道某些数据由于某些未知原因出错了。

有一个关于这个话题的SO主题:你更喜欢异常还是返回码?

1
查德,这非常有道理。但是,在不知道服务被哪个平台使用的情况下,是否可以从 Web 服务中抛出异常?我的初步想法是建立一个 DataContract,封装一个代码和一个消息。如何用异常来替换它呢? - dotariel
1
@XSaint32,我做得不多,但我认为这不是问题。我相当确定我有一个.NET应用程序调用Java服务,并且可以正常捕获异常。最终的结果将被序列化为xml / soap。据我所知,当您添加Web服务引用时生成的类可以处理此问题。 - CaffGeek
这种方法可以与xml/soap包装器一起使用,但我可能需要使用REST提供这些服务。RESTful服务能否抛出除HTTP异常以外的任何异常?我需要假设消费Web服务的客户端可能是一个简单的PHP cURL站点。 - dotariel

2
不要直接使用返回代码。返回代码通常表示成功、一组预期失败和意外失败。Web服务使用预期故障和意外故障来替换此机制。请查看FaultContractFaultException<T>以获取有关预期故障的实现细节。意外故障是任何其他异常。这是最佳实践。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接