Swashbuckle 生成的 Swagger 在 Azure API 管理中创建重复的版本路径

Swashbuckle generated Swagger creates duplicate version path in Azure API Management

我正在尝试将 Azure API 管理配置为使用版本控制并使其与 Swashbuckle 生成的 Swagger / Open API 文档一起使用。

我有一个 API 有 2 个版本 - 1.0 和 2.0。我已将 Swashbuckle 配置为生成 2 个单独的 Swagger 文档,每个版本一个。一切顺利。

版本控制方案是按路径进行的,因此消费者需要调用正确的路径(v1.0 或 v2.0)。像这样:https://someurl/v1.0/some/thing

我已经在 Azure API 管理中定义了两个版本并导入了两个文档。

问题是 Azure API 管理正在将路径添加到基础 URL 然后因为在 Swashbuckle 生成的打开 API 文档中定义的路径我是在 Azure API 管理中以 https://someurl/v1.0/v1.0/some/thing 结束。

下面是生成的 Swagger/Open 的片段 API...

以及 Azure API 管理中的 API 版本设置...

以及 Azure API 管理中的完整 URL...

所以,我的问题是如何使用 Swashbuckle 或任何其他工具以我可以支持 Azure API 使用路径版本控制方案进行管理版本控制的方式生成 Swagger 文档。

提前致谢!

由于 OpenAPI 规范本身不允许您定义版本控制方案,因此无法在 APIM 级别推断用户意图。一个人可能想在路径中导入 API 和 /v1.0/ 作为单个 API,其他人,就像你的情况一样,想要 API + 版本集。默认情况下,APIM 在 API 导入期间不会 create/update 版本集,因此目前唯一的方法是在您之前从 OpenAPI 规范中删除 /v1.0 前缀导入 APIM.

APIms域模型允许在[=17=级别控制版本控制方案(路径前缀,header name/value,查询参数name/value) ] 版本集,这样您就不需要在 API 的每个操作中都复制 /v1.0。从本质上讲,如果您的 API 版本集配置为具有 /v1.0 的路径前缀,它将附加到此版本集中包含的所有 API 路径。这就是产生加倍的原因。