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进行接口调试看看效果

    验证通过:

    验证非法:

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

  • 相关阅读:
    nginx 过滤了自定义的请求头参数
    Mysql5.7查看已经执行的sql语句
    Reids5 持久化
    JS 格式化时间,转成 几天前,几个月前
    个人小镜像站点
    记录一次清理Redis 病毒程序 kdevtmpfsi
    laravels 热重启
    Redis 布隆器安装和简单实现
    Redis Zset类型跳跃表算法实现(JAVA)
    Redis5 基于Lua实现分布式排它锁
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/12794430.html
Copyright © 2011-2022 走看看