如何通过.NET Swagger工具导出最新版本API的Swagger文档
.NET Swagger CLI 导出最新版本API文档方案
当前使用swagger .NET 工具生成指定版本Swagger JSON的命令如下:swagger tofile --serializeasv2 --output rest-api.json C:\Service.dll v1
该命令要求必须显式传入对应API版本的Swagger文档名称(示例中为v1),工具本身没有内置自动识别最新版本的参数,此前尝试创建名为latest的文档承载最新版本内容失败,可通过以下两种可行方案实现需求:
方案1:脚本动态获取最新版本传入命令
该方案无需修改业务项目代码,侵入性最低:
- 按项目实际的版本存储规则,提前提取所有已注册的Swagger文档版本号,按版本规则排序取最大值后,作为参数传入导出命令即可
- 针对数字递增的版本命名规则(v1、v2、v3),可参考以下PowerShell脚本逻辑实现:
# 替换为实际读取项目所有已注册Swagger版本的逻辑 $registeredVersions = @("v1", "v2", "v3") # 按版本号数值倒序取最高版本 $latestVer = $registeredVersions | Sort-Object { [int]($_ -replace 'v', '') } -Descending | Select-Object -First 1 # 执行导出命令 swagger tofile --serializeasv2 --output rest-api.json C:\Service.dll $latestVer
如果使用语义化版本命名(如v1.0.0、v1.1.2-beta),需要将排序逻辑替换为语义化版本排序规则,避免版本识别错误。
方案2:项目内正确配置latest文档分组
此前创建latest文档失败的核心原因是未将最新版本的API端点正确归入latest分组,正确配置步骤如下:
- 在服务Swagger配置段,额外注册一个文档标识为
latest的Swagger文档 - 配置API分组约定时,将当前标记为最新版本的所有API端点,同时归入对应原版本号分组和
latest分组 - 可在Swagger UI配置中隐藏
latest分组,避免前端文档页出现重复入口
配置完成后可直接执行命令导出最新版本文档:swagger tofile --serializeasv2 --output rest-api.json C:\Service.dll latest
该方案的缺点是每次迭代发布新版本时,需要调整配置将latest分组映射到新的最高版本,适合版本迭代频率较低的项目。
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

