zoukankan      html  css  js  c++  java
  • WebApi参数检查验证FluentValidation的使用方法

    右键打开NuGet程序包管理,进入浏览,搜索 FluentValidation,点击下载

    在Model文件夹添加一个Person类进行校验

    校验前,using需要引入相应的命名空间方可使用,AbstractValidators叫对象验证器的基类需要继承它,针对属性进行校验,并且输出相应的错误提示

    using FluentValidation;
    using FluentValidation.Attributes;
    namespace Demo.Models
    {
        [Validator(typeof(PersonValidator))]
        public class Person
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
        public class PersonValidator : AbstractValidator<Person>
        {
            //构造方法
            public PersonValidator()
            {
                RuleFor(m => m.Id).NotEmpty().NotNull().WithMessage("ID不能为空");
                RuleFor(m=>m.Name).NotEmpty().NotNull().WithMessage("姓名不能为空");
            }
        }
    
    }

    创建Filter文件夹,在文件夹里面创建一个特性类,对验证进行筛选。。定义特性类后缀:Attribute

    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http.Controllers;
    using System.Web.Http.Filters;
    
    namespace Demo.Filter
    {
        //定义特性类筛选器
        public class ParamsFilterAttribute:ActionFilterAttribute        
        {
            public override void OnActionExecuting(HttpActionContext actionContext)
            {
                //提供参数非法
                if (!actionContext.ModelState.IsValid)
                {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
    
                }
                //没有提供参数
                else if (actionContext.ActionArguments.Values.First()==null)
                {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest,"请输入参数");
                }
            }
        }
    }

    创建一个Api控制器,将刚刚定义的特性类在此方法中表示,[FromBody]作用:表示该参数值可在Body中获取,而不是从通过Url中获取

    using Demo.Filter;
    using Demo.Models;
    using System.Web.Http;
    
    namespace Demo.Controllers
    {
    
        public class FluentController : ApiController
        {
            [HttpPost]
            [ParamsFilter]
            public IHttpActionResult Validation([FromBody] Person person)
            {
                return Json(person);
            }
        }
    }

    以上操作完成后,启用Postman进行接口调试看看效果

    验证通过:

    验证非法:

    如有错误,请指正谢谢。。。

  • 相关阅读:
    005. gitlab安装
    004. github使用
    003. git标签
    TS标红和报错解决(优化项)
    catalog连接数据库与sde权限问题
    博客新生企划
    HDU 7105 Power Sum
    HDU 7131 Nun Heh Heh Aaaaaaaaaaa
    BZOJ 1691 挑剔的美食家
    洛谷 4254 Blue Mary 开公司
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/12794430.html
Copyright © 2011-2022 走看看