庾芷秋 发表于 2025-5-29 14:13:35

Aspnet Core 10 Preview3已对最小API提供参数验证支持

前言

相信大家都或多或少用上了Minimal API,快速简洁,性能炸裂,是快速开发API端口的不二之选!但是呢目前正式版为止 最小API还并不内置支持对请求参数的内置验证支持,比如,或者任何需要验证的地方,往往我们要实现这样的逻辑都必须自主扩展一个EndpointFilter,这个在NET社区也算是一个不大不小的槽点,不过呢MS总算是千呼万唤始出来,在NET10的第三个预览版提供了对System.ComponentModel.DataAnnotations内置验证支持!
体验

安装升级到最新释出的NET10Preview3,然后完成下面操作:
builder.Services.AddValidation();在项目文件(.csproj)中配置 InterceptorsNamespaces 属性以启用自动生成的拦截器。示例配置如下:
<PropertyGroup>
   
<InterceptorsNamespaces>$(InterceptorsNamespaces);Microsoft.AspNetCore.Http.Validation.Generated</InterceptorsNamespaces>
</PropertyGroup>然后源生成器就可以工作了,会自动发现验证类型 实现机制会自动查找在最小 API 处理程序中定义的类型或其基类型中所配置的验证属性,并在每个终端节点上通过添加的终端节点筛选条件执行验证。这种方式大大简化了开发者的工作量,无需手动编写验证逻辑。
比如下面的API定义:
app.MapPost("/products",
    ( int productId, string name)
      => TypedResults.Ok(productId))如果产品ID未传,或者name为空那么将会返回 HTTP 400 Bad Request的错误!
如果需要排除这个Endpoint的参数验证只需要添加上.DisableValidation()即可:
app.MapPost("/products",
    ( int productId) => TypedResults.Ok(productId))
    .DisableValidation();当然了除了内置于System.ComponentModel.DataAnnotations的验证特性之外,你完全可以扩展自己的验证特性,比如和业务相关的复杂验证情况,只需要实现IValidatableObject接口即可,也可以继承自ValidationAttribute实现一些简单的个性化验证
最后

验证支持机制使 MinimalAPI 能够在请求数据进入业务逻辑之前自动执行验证,从而提高安全性和代码维护性。同时,开发者既可以利用内置的验证功能,也可以通过自定义验证属性和接口实现来满足特定业务需求。通过这种灵活的设计,ASP.NET Core 的MinimalAPI能够在保持简洁的同时,提供强大而可靠的验证支持。
当前还属于早期预览版本,可能后续正式版本的发布还会有些许变化,前期了解即可,待正式发布再用于生产~
我们一起期待正式版的早日到来!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

祖柔惠 发表于 2025-10-27 17:13:08

东西不错很实用谢谢分享

嫁蝇 发表于 2026-1-12 14:08:30

感谢,下载保存了

慷规扣 发表于 2026-1-18 16:54:32

yyds。多谢分享

龙骋唧 发表于 2026-1-20 21:04:13

东西不错很实用谢谢分享

后沛若 发表于 2026-1-22 00:25:17

yyds。多谢分享

陆菊 发表于 2026-1-28 05:21:28

yyds。多谢分享

辗振 发表于 2026-1-30 06:06:47

谢谢分享,试用一下

习和璧 发表于 2026-1-30 06:34:41

谢谢分享,辛苦了

何书艺 发表于 2026-2-3 06:35:24

谢谢分享,辛苦了

砂歹汤 发表于 2026-2-5 10:46:28

鼓励转贴优秀软件安全工具和文档!

仟仞 发表于 2026-2-6 12:02:16

不错,里面软件多更新就更好了

向梦桐 发表于 2026-2-7 03:19:33

感谢分享,下载保存了,貌似很强大

致掣 发表于 2026-2-8 12:32:12

这个有用。

溜椎干 发表于 2026-2-9 11:10:51

新版吗?好像是停更了吧。

吮槌圯 发表于 2026-2-9 12:05:33

谢谢分享,试用一下

尝琨 发表于 2026-2-12 07:46:36

新版吗?好像是停更了吧。

刃减胸 发表于 2026-2-12 18:11:00

感谢分享,学习下。

旱由 发表于 7 天前

感谢分享,学习下。

渣骑 发表于 3 天前

谢谢分享,试用一下
页: [1]
查看完整版本: Aspnet Core 10 Preview3已对最小API提供参数验证支持