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

  • 相关阅读:
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
    变态跳台阶
    跳台阶
    ubuntu图形界面切换文字界面(文字界面切换图形界面)
    Django环境安装、虚拟机端口映射、pycharm远程配置
    sql注入(一)-----数字型
    mysql基本语法
    渗透测试之------信息收集
  • 原文地址:https://www.cnblogs.com/myfqm/p/12987626.html
Copyright © 2011-2022 走看看