如何解决如何在ASP.NET CORE 3.1 Web API中捕获当前状态代码
我编写了将结果返回到对象中的方法。我需要捕获当前的HttpStatusCode,而不是创建自己的HttpStatusCode并在返回结果之前保存在以下对象中
[HttpPost]
public ActionResult createuser([FromBody]UsereDto user)
{
try
{
var data = UserService.createuser(user);
var result = new ResultDto
{
Ok = true,Data = data,Error = "No",StatusCode = HttpStatusCode. ???????????????
};
return Ok(result);
}
catch(Exception exp)
{
var errorResult = new ResultDto
{
Ok = false,Data = null,Error = exp.ToString()
StatusCode = ????????????
};
return Ok(errorResult);
}
}
解决方法
由于HTTP响应已经包含了HTTP状态,所以我不是100%不确定要实现什么或为什么要这样做,因此在JSON响应中另外返回它不会添加比已有信息更多的信息。
但是您可以对状态进行硬编码,因为示例中的状态始终为200,除非响应序列化过程中出现错误等。
在???
行之后,您确实返回了一个Ok()
响应,该响应将返回200。
无法捕获现有的HTTP代码 您可以自己手动输入http代码。
例如: 创建代码= 201 错误代码= 400 错误请求:301 未找到:404
return StatusCode(200,object);
您也可以通过这种方式返回它。
,您无需在dto中创建自己的状态代码...
return Ok(errorResult);
将返回200错误,这是错误的。
相反,您应该返回BadRequestResult(errorResult),并且ui会收到包含DTO的500个结果。
此外,您可以返回return Ok(result);
而不是OkResult(result)
,这将返回200,其中还包含您的DTO ...
此外,您还应该在单独的类中将Dto创建提取到它自己的方法中,以遵循DRY和单一职责原则。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。