WebApi参数检查验证FluentValidation的使用方法

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

WebApi参数检查验证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进行接口调试看看效果

验证通过:

WebApi参数检查验证FluentValidation的使用方法

验证非法:

WebApi参数检查验证FluentValidation的使用方法

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