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. 测试:

  • 相关阅读:
    MVVM架构~knockoutjs实现简单的购物车
    Thrift架构~目录
    WebApi系列~在WebApi中实现Cors访问
    WebApi系列~基于RESTful标准的Web Api
    MVVM架构~目录
    IOS设计模式学习(20)命令
    MySQL保留关键字
    Eclipse with C++: "Launch failed. Binary not found."
    HTML5 Canvas鼠标与键盘事件
    通过openssh远程登录时的延迟问题解决
  • 原文地址:https://www.cnblogs.com/lenmom/p/8601736.html
Copyright © 2011-2022 走看看