zoukankan      html  css  js  c++  java
  • Fluent Validation with Web Api 2

    1. nuget添加FluentValidation.WebApi引用.

    2. 模型定义:

        [Validator(typeof(CustomerValidator))]
        public class UserModel
        {
            public string UserName { get; set; }
            public string Password { get; set; }
        }

    3. Validator定义:

        public class CustomerValidator : AbstractValidator<UserModel>
        {
            public CustomerValidator()
            {
                RuleFor(customer => customer.UserName).NotEmpty();
                RuleFor(customer => customer.Password).NotEmpty().WithMessage("Please specify a first name");
            }
        }

    4. Controller定义:

        public class DefaultController : ApiController
        {
            // POST: api/Default
            public bool Post([FromBody]UserModel user)
            {
                //var validator = new CustomerValidator();
                //var results = validator.Validate(user);
    
                return user.UserName == "admin";
            }
        }

    5. Validation Action Filter定义:

        public class ValidateModelStateFilter : ActionFilterAttribute
        {
            public override void OnActionExecuting(HttpActionContext actionContext)
            {
                if (!actionContext.ModelState.IsValid)
                {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
                }
            }
        }

    6. 最后在WebApp启动时注册注册ValidationFilter:

        public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Web API configuration and services
    
                // Web API routes
                config.MapHttpAttributeRoutes();
    
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
    
                config.Filters.Add(new ValidateModelStateFilter());
                FluentValidationModelValidatorProvider.Configure(config);
            }
        }

    7. 测试:

  • 相关阅读:
    TCP/IP详解学习笔记
    python 中颜色的表示
    token工作原理
    sql注入相关链接记一次SQL注入实战
    python读写不同编码txt文件
    selenium+python 优化测试报告
    一个非常好的Linux学习网站
    jmeter 正则表达式 练习
    jmeter 实战项目总结2——微信端
    jmeter 实战项目总结1
  • 原文地址:https://www.cnblogs.com/lenmom/p/8601736.html
Copyright © 2011-2022 走看看