我在Web API无法执行动作时发送什么响应,因为第三方服务
当我的Web API由于第三方服务的原因无法执行某个操作时,我应该发送什么响应?
Web API中包含一些快捷方法,你在可能的情况下应该使用它们,但它们只针对一些常见的错误代码提供了一些方法。
以下代码将只返回StatusCode:
return StatusCode(HttpStatusCode.BadGateway);
最常见的返回如下:
return NotFound() // 404 return Ok() //200 return InternalServerError() //500
你应该问自己的是,是否绝对需要返回准确的错误代码。你的前端是否需要知道这些?如果你已经在API中处理了异常的日志记录,那么你可能应该返回一些更通用的错误代码,比如InternalServerError()
。
如果一切顺利,我打算返回一组信息。有没有一种常见的返回类型,可以让我发送Bad Gateway状态码或类似于ObjectResult
的东西?
我不太确定你在这里问的是什么。我上面发布的return StatusCode(HttpStatusCode.BadGateway);
将返回你所需的状态码。
考虑在API调用失败时返回JSon对象。当发生故障时,构建您的自定义对象,并在从API响应之前序列化。请参考stackoverflow.com/questions/22607031/…。
我理解了你的答案,很有道理。我的问题是,是否有一种常见的类型可以让我返回这个状态码,就像你给出的一个示例,当方法的控制流由于错误而发生时,或者返回我从第三方服务成功检索到的集合的ObjectResult
。
我道歉。IActionResult的确是两者都实现的接口。我错误地认为我得到一个错误,因为我的方法的返回类型,但实际上我必须将枚举转换为整数。StatusCode
接受一个整数,我没有看到接受HttpStatusCode
枚举作为参数的扩展方法或其他内容。谢谢!
你不得不进行强制转换真是奇怪。你使用的是哪个IDE?
- Visual Studio 2017. 我也觉得很奇怪。但是Resharper对此并不满意,哈哈。