如何使用与 Asp.Net 核心验证相同的格式返回 400 响应?



我在 Asp.Net Core 中使用模型验证,它返回 400 个错误,如下所示:

{
"errors": {
"MyProperty": [
"Error 1",
"Error 2"
]
},
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "0HLRTF1TPCO60:00000002"
}

我确实有不使用 Asp.Net 核心内置机制的自定义验证,但我想以完全相同的格式生成错误,以便用户更容易使用。我当然可以自己生成 JSON,但我认为有一些内置的 API 可以从模型中生成这样的错误,尽管我无法找到我应该调用的内容。

附言我想在中间件中执行此操作

我已经弄清楚了如何实现这一目标:

var modelState = new ModelStateDictionary();
modelState.AddModelError("FieldName", "ErrorMessage");
var details = new ValidationProblemDetails(modelState);
details.Status = (int?) HttpStatusCode.BadRequest;
details.Extensions["traceId"] = context.TraceIdentifier;

详细信息稍后可以序列化为 JSON。

最新更新