C# 当FluentValidation返回错误时,如何返回自定义响应?
我正在使用C# 当FluentValidation返回错误时,如何返回自定义响应?,c#,asp.net-core,.net-core,asp.net-core-webapi,fluentvalidation,C#,Asp.net Core,.net Core,Asp.net Core Webapi,Fluentvalidation,我正在使用FluentValidation验证我的ASP.NET Core 3.1 Web API的输入。我是用“自动”的方式做的。因此,在我的Startup课程中,我有: services.AddControllers() .AddFluentValidation(opt => { opt.RegisterValidatorsFromAssemblyContaining(typeof(User
FluentValidation
验证我的ASP.NET Core 3.1 Web API的输入。我是用“自动”的方式做的。因此,在我的Startup
课程中,我有:
services.AddControllers()
.AddFluentValidation(opt =>
{
opt.RegisterValidatorsFromAssemblyContaining(typeof(UserInputValidator));
});
通过这种方式,FluentValidation
神奇地验证来自上述程序集的所有输入,而不需要其他代码。很甜蜜,但是。。。响应格式与我返回BadRequest
时使用的响应格式不同。这是FluentValidation格式:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|3b037c98-40d28ab8553d6989.",
"errors": {
"UserId": [
"'User Id' must be greater than '0'."
],
"Score": [
"'Score' must be between 0 and 500. You entered 900."
]
}
}
我宁愿:
{
"code": 123456,
"message": "One or more validation errors occurred.",
"errors": [
"'User Id' must be greater than '0'.",
"'Score' must be between 0 and 500. You entered 900."
]
}
所以我的问题是,有可能推翻它吗
我有一个想法,但不确定这是否是一个好的实践(甚至可能),但是如果FluentValidation
而不是返回它的BadRequest响应
将抛出异常,我将能够在中间件中捕获它并重新格式化
无论如何,FluentValidation
非常流行,.NET核心WebAPI
非常流行。我很难相信“忍者开发者”会仅仅使用第三方工具提供的响应,这与他们的响应格式不匹配。然而,我看不到很多材料如何修复它(甚至在FluentValidation
网站上。我错过了吗?你有没有检查@MuhammadHannan这些答案的问题,是他们没有用错误代码解决问题你检查@MuhammadHannan这些答案的问题,是他们没有用错误代码解决问题