如何在Web API的void方法中抛出错误(错误请求)



如何在Web API的void方法中抛出错误(Bad Request)

public async Task UpdateRecord([FromBody] UpdateRecord model)
{
try
{
await _recordService.UpdateRecord(model);
}
catch (Exception ex)
{
var message = new NetHttp.HttpResponseMessage(HttpStatusCode.BadRequest);
message.Content = new NetHttp.StringContent(ex.Message);
throw new WebHttp.HttpResponseException(message);
}
}

在swagger中显示为500。但是我已经提到了400 -错误请求

因为你抛出了一个异常,它将永远是500(如果你没有在其他地方捕捉到它)。

如果你想要一个错误的请求,那么

public async Task<IHttpActionResult> UpdateRecord([FromBody] UpdateRecord model)
{
try
{
await _recordService.UpdateRecord(model);
}
catch (Exception ex)
{
return BadRequest(/*Optional message*/);
}
return Ok(returnData);
}

我建议你重新考虑你的策略:

  1. 未处理的异常不应该在应用程序中正常发生。如果发生这种情况,那么500族是返回的正确Http代码。
  2. 您可以看到BadRequest期望一些验证错误。虽然不是强制性的,但此错误代码假定在格式方面存在某种类型的错误输入数据,而不是业务逻辑。

你可以在没有验证消息的情况下使用

return BadRequest();

在得到Athanasios Kataras的建议后,我更新如下

public async Task<IActionResult> UpdateRecord([FromBody] UpdateRecord model)
{
try
{
await _recordService.UpdateRecord(model);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}

return Ok(); // Not passing any value inside
}

相关内容

最新更新