编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

提升.Net API的健壮性:FluentValidation实战教程,轻松搞定数据校验!

wxchong 2024-11-05 12:36:49 开源技术 31 ℃ 0 评论

在快速迭代的开发过程中,确保我们的应用程序能够正确处理有效且预期的输入变得尤为重要。因此,模型校验作为提高API健壮性及用户体验不可或缺的一个环节,也是我们编码中的一项基本任务。今天我们就来详细介绍一下如何在.Net项目中使用FluentValidation库来进行模型验证。

GitHub的地址为:

https://github.com/FluentValidation/FluentValidation


FluentValidation的引入与设置

首先,FluentValidation是一个流行的.Net验证库,它通过使用流畅的接口和lambda表达式,让验证逻辑更加清晰易懂。那么如何在我们的项目中引入FluentValidation呢?

NuGet包的安装

我们可以通过NuGet包管理器来引入FluentValidation.AspNetCore。你只需要执行以下命令(或在您的NuGet包管理器中搜索并安装):

dotnet add package FluentValidation.AspNetCore

在Startup中注入服务

接下来,我们要在Api项目的Startup类中进行相应配置以使用FluentValidation。在ConfigureServices方法中做如下设置:

/// <summary>/// 初始化模型验证/// </summary>/// <param name="services"></param>private static void InitValidation(IServiceCollection services){ //模型验证 services.AddControllersWithViews() .AddFluentValidation(config =>//添加FluentValidation验证 {
//程序集方式添加验证 // config.RegisterValidatorsFromAssemblyContaining(typeof(TMTotalCostGenerateDetailValidation)); //注入程序集 config.RegisterValidatorsFromAssembly(Assembly.Load(Assembly.GetExecutingAssembly().GetName().Name)); config.RegisterValidatorsFromAssembly(Assembly.Load(Assembly.GetExecutingAssembly().GetName().Name.Replace("Api", "Domain"))); //是否与MvcValidation共存,设置为false后将不再执行特性方式的验证 config.RunDefaultMvcValidationAfterFluentValidationExecutes = false; }); //重写模型验证错误 services.Configure<ApiBehaviorOptions>(options => { options.InvalidModelStateResponseFactory = (context) => { var errors = context.ModelState .Values .SelectMany(x => x.Errors .Select(p => p.ErrorMessage)) .ToList();
var result = new { code = "400", message = "Validation errors", data = errors };
return new BadRequestObjectResult(result); }; });}

ConfigureServices中调用InitValidation(services);进行服务注入。


使用FluentValidation

安排妥当后我们就可以在模型上写上我们的验证器。验证器需继承于AbstractValidator<T>,T是你的模型类型。

这样在进入Controller之前就会自动对Controller的入参实体进行校验,校验通过后才能进入到控制器层


验证设置完成后,在控制器中的具体Action的模型参数上应用验证器,就能在进入Action之前进行自动验证。如果验证失败,则会根据我们在Startup中自定义的错误响应,返回友好的错误信息。

此外,FluentValidation提供了许多内置验证规则,如RuleFor,你可以轻松地进行常规的数据规则检查。详细使用文档可以访问官方网站:

https://docs.fluentvalidation.net/en/latest/installation.html

如果你需要实现一些更复杂的自定义验证逻辑,你可以编写自定义的验证方法并在验证器中使用它们。以我们一开始提到的bizcaseid的校验为例,你可以类似这样实现:



以上就是使用FluentValidation库在.Net中进行模型验证的基本介绍。记得持续关注我,不断探索更多.Net技术知识。希望这篇文章对你有所帮助,助力你的.Net开发之旅!



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表