ABP后端的校验使用:FluentValidation

85 篇文章 0 订阅

EF Core学习笔记:配置的方式 特性/Fluent API_董厂长的博客-CSDN博客_efcore 特性前置笔记:EF Core学习笔记:CRUD_董厂长的博客-CSDN博客两种配置方式 1.特性配置 2.Fluent Api第一种方式写在实体类中,比较耦合,最好使用第二种。https://blog.csdn.net/dongnihao/article/details/125667984?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166729235216782429748852%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166729235216782429748852&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-125667984-null-null.nonecase&utm_term=fluent&spm=1018.2226.3001.4450

.net内置数据校验机制,在项目代码中发现很多地方使用了特性校验。

1、.NET Core中内置了对数据校验的支持,在System.ComponentModel.DataAnnotations这个命名空间下,比如[Required]、[EmailAddress] 、[RegularExpression]。CustomValidationAttribute、IValidatableObject。

2、演示其在ASP.NET Core中请求中的使用。

3、内置的校验机制的问题:校验规则都是和模型类耦合在一起,违反“单一职责原则”;很多常用的校验都需要编写自定义校验规则,而且写起来麻烦。

 建议使用FluentValidation

1、FluentValidation:用类似于EF Core中Fluent API的方式进行校验规则的配置,也就是我们可以把对模型类的校验放到单独的校验类中。

2、 FluentValidation在ASP.NET Core项目中的用法

        1)NuGet:FluentValidation.AspNetCore

        2)注入服务

builder.Services.AddFluentValidation(fv => {

    Assembly assembly = Assembly.GetExecutingAssembly();

    fv.RegisterValidatorsFromAssembly(assembly);
    // RegisterValidatorsFromAssemblies

3 编写模型类Login2Request

public record Login2Request(string Email, string Password, string Password2);

4)编写继承自AbstractValidator的数据校验类

public class Login2RequestValidator: AbstractValidator<Login2Request>
                                                        // 看这里的泛型 傻逼

{
	public Login2RequestValidator()
	{

		RuleFor(x=>x.Email).NotNull().EmailAddress()
			.Must(v=>v.EndsWith("@qq.com")||v.EndsWith("@163.com"))
			.WithMessage("只支持QQ和163邮箱");

		RuleFor(x => x.Password).NotNull().Length(3, 10)
			.WithMessage("密码长度必须介于3到10之间")
 			.Equal(x => x.Password2)
            .WithMessage("两次密码必须一致");

 	}
 }

5)用Login2Request做Action方法的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值