繁体   English   中英

不一致的行为:手动返回 BadRequest 时 ASP.NET Core 中的错误响应对象

[英]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() 这将创建一个设置为BadRequestValidationProblemDetails对象,用您的ModelState错误填充它,并返回它。

ValidationProblem()重载允许进一步自定义返回的响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM