问题描述
我编写了将结果返回到对象中的方法。我需要捕获当前的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和单一职责原则。