提问人:Salva P 提问时间:11/12/2023 最后编辑:Rand RandomSalva P 更新时间:11/13/2023 访问量:52
如何将所有 C# 微服务放在同一个 Swagger 页面中
How to get all C# microservices together in same Swagger page
问:
我正在开发一个平台,在 Ocelot 中完成了 3 个微服务和一个 API 网关。问题是我想在 Swagger 页面中获取所有微服务,例如:
我不想实现 Swagger 端点:
提前致谢。我在这些问题中停留了几天。
答:
0赞
Jakub
11/13/2023
#1
遗憾的是,.NET 中没有允许您合并 OpenAPI 文档的“内置”功能。在这种情况下,您需要使用一个外部库,该库允许您合并 OpenAPI 文档或自己编写此类功能。使用外部库时,您必须考虑到它们可能无法满足您的要求,例如,过滤端点或处理冲突(例如,具有相同名称的模型出现在您正在合并的多个文档中)。
另一方面,.NET 提供了一个非常简单且用户友好的 API,可以非常方便地处理 OpenAPI 文档 - 您可能需要的所有内容都可以在 NuGet 包中找到。这些软件包几乎涵盖了您可能需要的一切,从阅读各种格式的文档到操作结构。Microsoft.OpenApi
从本质上讲,最基本的合并过程将涉及合并 OpenAPI 文档中的多个列表:
- 路径
- 组件(在最简单的情况下,它只是一个 Components.Schemas)
应用你自己的逻辑将允许你以任何你想要的方式管理“输出”文档 - 相对简单。我最近试图解决合并 OpenAPI 文档的问题,但不幸的是,大多数项目要么不符合我的要求,要么几年前就放弃了对它们的支持。
评论
0赞
Salva P
11/15/2023
谢谢波西奥。我有很多工作要做。
0赞
Jakub
11/15/2023
您可以使用现有的开源库。但就我而言,我很快就达到了极限。无论如何,如果您需要最基本的解决方案。也许值得一试。
评论