gpt4 book ai didi

asp.net-web-api - Web API中的返回错误

转载 作者:行者123 更新时间:2023-12-04 03:01:20 25 4
gpt4 key购买 nike

我正在使用ASP.NET Web API开发一种全新的REST API。来自WCF背景,我很想为我的API创建“错误契约(Contract)”。

在这种情况下,我并不是在谈论将未处理的异常返回给客户端。相反,我专注于错误,例如客户端未正确使用API​​,尤其是那些客户端可以自动创建这些错误并重新提交请求的错误。

我发现的大多数示例都只是通过抛出HttpResponseException来返回字符串,或者至少做了一些事情来使构建信息错误的字符串的过程更加自动化:Return custom error objects in Web API

我正在考虑改为创建HttpResponseException,传入一个HttpResponseMessage,其内容设置为我的特定错误协定类型。

但是,我的API也大量使用了自动模型验证,这些模型验证错误又以完全不同的结构返回。

因此,我是否应该将“错误”强制转换为与模型验证响应相同的格式?这里的最佳做法是什么?

最后,我的API将公开json,xml和 Protocol Buffer 的格式设置选项。结果,我确实需要确保我的策略独立于格式化程序。

最佳答案

不久前,我写了这篇博客文章,介绍Web API如何进行错误处理:

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

它应该有助于回答您的问题。本质上,您有两个选择:

  • 定义您自己的错误响应类。在这种情况下,您要确保您的类可以序列化为XML,JSON等。然后您可以使用Request.CreateResponse(statusCode, myErrorInstance)来发回自定义错误。您可能还需要一种将无效模型状态转换为特定错误类型的方法。
  • 使用Web API的错误响应类型: HttpError 。 HttpError本质上是Dictionary<string, object>,您可以在其中将自己的键和值添加到HttpError中。优点是很多的-您的错误看起来就像Web API错误,您知道它适用于所有格式化程序,并且可以避免必须定义异常和无效模型状态的转换的工作。使用HttpError的最简单方法是调用Request.CreateErrorResponse()
  • 关于asp.net-web-api - Web API中的返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755737/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com