[英]Inconsistent behaviour: Error response object in ASP.NET Core when manually return BadRequest
我有一个带有静态和动态验证的 ASP.NET Core REST Api。
当我没有指定必需的属性时,中间件会自动生成一个很好的错误消息:
{
"errors": {
"status": [
"Required property 'status' not found in JSON. Path '', line 37, position 1."
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|a6b5a076-4b400dadb53f75e7."
}
我也有某种动态验证,我手动填充 ModelState 并返回一个 BadRequest。
简化示例:
ModelState.AddModelError("smh_data.materials.country_of_origin", "Field is required.");
return BadRequest(ModelState);
但在这种情况下,响应如下所示:
{
"smh_data.materials.country_of_origin": [
"Field is required."
]
}
如何获得与上面相同的响应对象,包括 traceId、类型、标题和状态?
不是调用return BadRequest()
,而是调用return ValidationProblem()
。 这将创建一个设置为BadRequest
的ValidationProblemDetails
对象,用您的ModelState
错误填充它,并返回它。
ValidationProblem()
重载允许进一步自定义返回的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.