我正在使用 ASP.NET Web API 开发一个全新的 REST API。来自 WCF 背景,我很喜欢为我的 API 创建“错误契约”。
在这种情况下,我不是在谈论返回给客户端的未处理异常。相反,我专注于错误,例如客户端使用不当的 API——尤其是那些客户端可以自动创建这些错误并重新提交请求的错误。
我发现的大多数示例只返回一个字符串,通常是通过抛出 HttpResponseException,或者至少做一些事情来使构建信息性错误字符串的过程更加自动化:Return custom error objects in Web API
我正在考虑创建一个 HttpResponseException,传入一个 HttpResponseMessage,其内容设置为我的特定错误合同类型。
不过,我的 API 也大量使用了自动模型验证,这些模型验证错误以完全不同的结构返回。
那么我应该将我的“错误”强制转换为与模型验证响应相同的格式吗?这里有哪些最佳实践?
最后,我的 API 将公开 json、xml 和协议缓冲区的格式化选项。因此,我真的需要确保我的策略是独立于格式化程序的。