.net core使用FluentValidation校验
asp.net core需要两个包FluentValidation
和 FluentValidation.AspNetCore
// 注册 FluentValidation builder.Services.AddFluentValidationAutoValidation(); // 启用自动验证 // 注册验证器 builder.Services.AddValidatorsFromAssemblyContaining<PersonValidator>();
//自定义校验错误的响应
builder.Services.AddControllers()
.ConfigureApiBehaviorOptions(options =>
{
options.InvalidModelStateResponseFactory = context =>
{
var errors = context.ModelState
.Where(e => e.Value.Errors.Count > 0)
.ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
);
return new BadRequestObjectResult(new
{
Message = "Validation errors occurred.",
Errors = errors
});
};
});
//校验类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
public class PersonValidator : AbstractValidator<Person>//一定要继承这个类
{
public PersonValidator()
{
RuleFor(p => p.Name).NotEmpty().WithMessage("Name is required.");
RuleFor(p => p.Age).GreaterThan(0).WithMessage("Age must be greater than 0.");
RuleFor(p => p.Email).NotEmpty().EmailAddress().WithMessage("A valid email is required.");
}
}
不仅仅是可以校验数据格式,还可以校验数据库中用户是否存在
1 public class Login3RequestValidator:AbstractValidator<Login3Request> 2 { 3 public Login3RequestValidator(TestDbContext dbCtx) 4 { 1 RuleFor(x => x.UserName).NotNull() 2 .MustAsync((name,_) => dbCtx.Users.AnyAsync(u => u.UserName == name)) 3 .WithMessage(c => $"用户名{c.UserName}不存在");//数据库服务 8 } 9 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-02-27 操作系统面试常见问题
2021-02-27 浏览器从输入url到页面加载发什么了
2021-02-27 计网运输层