Panda.DynamicWebApi icon indicating copy to clipboard operation
Panda.DynamicWebApi copied to clipboard

不支持.net 9 OpenApi

Open girvs opened this issue 9 months ago • 1 comments

API 生成工具Panda.DynamicWebApi 兼容性适用场景
Microsoft.AspNetCore.OpenApi❌ 不支持动态 API适用于 Minimal API & 标准 MVC
Swashbuckle.AspNetCore✅ 完美支持适用于 动态 API(如 Panda.DynamicWebApi

girvs avatar Mar 19 '25 09:03 girvs

先说结果。末尾有解决方案。

通过一晚上的代码比对和调试,我发现在 Microsoft.AspNetCore.OpenApiOpenApiDocumentService服务的GetOpenApiPathsAsync方法内有一段代码.Where(_options.ShouldInclude)将DynamicWebApi的Api全部过滤没了。

其中ShouldInclude默认是 ShouldInclude = (description) => description.GroupName == null || description.GroupName == DocumentName;

通过controller注册的正好符合description.GroupName == null 然而通过DynamicWebApi注册的Api接口的GroupName就是Class的名字,所以就没被openApi抓取到。

--- 解决方案: ervices.AddOpenApi(options => { options.ShouldInclude = (_ => true); });

RemMai avatar Apr 28 '25 05:04 RemMai