Panda.DynamicWebApi
Panda.DynamicWebApi copied to clipboard
不支持.net 9 OpenApi
| API 生成工具 | Panda.DynamicWebApi 兼容性 | 适用场景 |
|---|---|---|
Microsoft.AspNetCore.OpenApi | ❌ 不支持动态 API | 适用于 Minimal API & 标准 MVC |
Swashbuckle.AspNetCore | ✅ 完美支持 | 适用于 动态 API(如 Panda.DynamicWebApi) |
先说结果。末尾有解决方案。
通过一晚上的代码比对和调试,我发现在
Microsoft.AspNetCore.OpenApi的OpenApiDocumentService服务的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); });