更简洁的参数校验,使用 FluentValidation 对参数进行校验

在开发接口时,如果要对参数进行校验,你会怎么写?编写 if-else 吗?虽然也能达到效果,但是不够优雅。今天,推荐一种更简洁的写法,使用 FluentValidation 对方法参数进行校验,特别是在编写 Controller 层的方法时,直接使用一个注解即可完成参数校验。

FluentValidation 是一个使用 Linq 表达式,非常流畅的小型业务对象验证组件。流畅也可以说优雅。类似链式操作。易于理解,功能完善。还可以配合 MVC 使用直接在页面进行验证,当你看到它的语法时,非常优雅,非常令人心动。

  1. 在控制器中使用[Required]和[StringLength]特性标记:

public class User

{

    [Required]

    public string Name { get; set; }



    [StringLength(20)]

    public string Password { get; set; }

}



public class UserController : Controller

{

    public IActionResult Create([FromBody] User user)

    {

        // to do

    }

}
  1. 使用ModelState.IsValid方法进行参数校验:

public IActionResult Create([FromBody] User user)

{

    if (ModelState.IsValid)

    {

        // to do

    }

    else

    {

        // to do

    }

}
  1. 使用FluentValidation库进行参数校验:

public class UserValidator : AbstractValidator<User>

{

    public UserValidator()

    {

        RuleFor(user => user.Name).NotEmpty();

        RuleFor(user => user.Password).Length(6, 20);

    }

}



public class UserController : Controller

{

    private readonly IValidator<User> _validator;



    public UserController(IValidator<User> validator)

    {

        _validator = validator;

    }



    public IActionResult Create([FromBody] User user)

    {

        if (_validator.Validate(user).IsValid)

        {

            // to do

        }

        else

        {

            // to do

        }

    }

}

在实际开发中,我们可以使用 FluentValidation提供的注解进行参数校验,提高代码的可读性,避免编写大量的 if-else 代码块和重复的校验语句。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值