簡體   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