FluentValidation 验证框架笔记1
FluentValidation第三方验证框架
引用包
FluentValidation
FluentValidation.AspNetCore
Core配置:
services.AddMvc() .AddFluentValidation(fv => //配置第三方输入验证 fv.RegisterValidatorsFromAssemblyContaining<Models.IValidator>()//批量注册 )
注意:
这里配置为使用FluentValidation验证,Core的自带验证并没有排除,如果输入实体带有注释,则会进行自带的验证
这里有二种验证方式
方式一:API输入验证
实体
public class User { public string Name { get; set; } }
验证标记,方便注入配置
public interface IValidator { }
配置验证内容
public class UserValidator : AbstractValidator<User>, IValidator { public UserValidator() { RuleFor(c => c.Name) .NotEmpty().WithMessage("名字不能为空") .Length(4, 10).WithMessage("长度必需在4~10字符之间"); } }
使用
[HttpPost("PostName")] public Task<string> PostName(User user) { return Task.FromResult("OK"); }
在前端输入的时候进行验证,这个是CORE API自动进行验证的,不需要手动调用验证
方式二:内部传递验证
定义一个泛型验证类
public class UserValidation<T> : AbstractValidator<T> where T : User { protected void ValidateName() { RuleFor(c => c.Name) .NotEmpty().WithMessage("名字不能为空") .Length(4, 10).WithMessage("长度必需在4~10字符之间"); } //其它验证条件 //protected void ValidateOther() //{ //} }
定义一个验证模型
public class UserCommandValidation : UserValidation<User> { public UserCommandValidation() { //需要验证哪些 ValidateName(); //其它验证 //ValidateOther(); } }
定义一个类,在类中使用验证模型
public class UserCommand { //定义验证结果 public ValidationResult validationResult; public bool IsValid(User user) { //验证结果,初始化并进行验证 validationResult = new UserCommandValidation().Validate(user); //返回验证结果 return validationResult.IsValid; } }
在实际使用的类中,手动调用验证
public List<string> GetName() { User user = new User() { Name = "1" }; UserCommand userCommand = new UserCommand(); List<string> errorInfo = new List<string>(); //手动调用验证 if (!userCommand.IsValid(user)) { foreach (var error in userCommand.validationResult.Errors) { errorInfo.Add(error.ErrorMessage); } } return errorInfo; }
到此,基础验证完成,FluentValidation是一款很强大的验证框架,有多种验证方式,可以在网上查询