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

    验证通过:

    验证非法:

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

  • 相关阅读:
    java多线程之happens-before
    三次握手和四次挥手
    数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
    网易云易盾中标浙报反作弊服务 助力浙江新闻App健康发展
    值得细读!如何系统有效地提升Android代码的安全性?
    逻辑编程入门--clojure.core.logic
    React server rendering —— 网易美学主站同构实录
    致传统企业朋友:不够痛就别微服务,有坑 (1)
    致传统企业朋友:不够痛就别微服务,有坑 (2)
    亲近用户—回归本质
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/12794430.html
Copyright © 2011-2022 走看看