[英]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.