zoukankan      html  css  js  c++  java
  • 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是一款很强大的验证框架,有多种验证方式,可以在网上查询

  • 相关阅读:
    阿里容器简介
    docker学习笔记(总纲)
    Apache利用mod_limitipconn模块限制客户端多线程下载
    Android从assets目录下读取文件相关
    android 指纹识别
    App前后台判断
    Error:Failed to create directory 'C:UsersAdministrator.gradlecaches2.8scriptsijinit7_5jx13p26
    com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files
    重复导包:Error:Execution failed for task ':countrynumberlibrary:mergeDebugResources'. > Some file crunching failed, see logs for details
    支付宝集成
  • 原文地址:https://www.cnblogs.com/myfqm/p/12987626.html
Copyright © 2011-2022 走看看