gpt4 book ai didi

c# - .NET Core WebAPI 中的 Fluent Validation 中间件是否足够,还是我应该再次在服务层中进行验证?

转载 作者:行者123 更新时间:2023-12-05 00:46:27 24 4
gpt4 key购买 nike

我有一个非常简单的三层ASP.NET Core WebAPI应用:

  1. Domain - 带有 EntitiesData interfacesServicesDTO 对象(这是唯一的输入和输出对象)。所以“域的接口(interface)”是接受输入 DTO 并返回输出 DTO 的服务。
  2. 基础设施 - 数据接口(interface)(数据存储库)和 CodeFirst 迁移的实现。
  3. WebAPI - 标准 ASP.NET Core 3.1 Web API 项目。

WebAPI 项目在 Controller 中返回“输出”DTO。对于接受有效负载的端点,使用“输入”DTO。 Controller 与域中的服务非常相似。 Controller 向世界公开域服务(显然是域的接口(interface))。

然后是验证...我熟悉 FluentValidation 和 ASP.NET Core 管道 - 这是一个很棒的中间件:

        services.AddControllers()
.AddFluentValidation(opt =>
{
opt.RegisterValidatorsFromAssemblyContaining(typeof(PersonInputValidator));
});

我为每个“输入”DTO 实现验证,效果很好,但是......我不确定这是否足够。如果您参加任何服务类(class),则几乎没有经过验证。它是 .NET Core 中间件,在技术上验证 Controller 的输入。

我应该再次在服务中“双重验证”吗?如果是这样,有没有一种平滑的方法可以重用我已经拥有的验证器?

最佳答案

您永远不必运行两次验证。应验证来自 Web API 的数据。如果您曾经将您的服务与 Web API 之外的任何其他接口(interface)一起使用,您也可以在那里实现流畅的验证。这是实现流畅验证的一个很好的例子:https://github.com/jasontaylordev/NorthwindTraders

关于c# - .NET Core WebAPI 中的 Fluent Validation 中间件是否足够,还是我应该再次在服务层中进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com