如何设置Swashbuckle.AspNetCore.SwaggerUI默认选中的API版本?
指定SwaggerUI默认选中的接口版本
可以实现,有两种常用方案:
方案一:调整端点注册顺序(简单直接)
SwaggerUI默认会选中第一个注册的SwaggerEndpoint,只需把你想要设为默认的版本放在循环之前优先注册,剩余版本再依次添加:
app.UseSwaggerUI(options => { // 优先注册默认版本(示例为v2) var defaultVersion = provider.ApiVersionDescriptions.First(d => d.GroupName == "v2"); options.SwaggerEndpoint( $"/{basePath}/swagger/{defaultVersion.GroupName}/swagger.json", defaultVersion.GroupName.ToUpperInvariant() ); // 注册其他版本 foreach (var description in provider.ApiVersionDescriptions.Where(d => d.GroupName != "v2")) { options.SwaggerEndpoint( $"/{basePath}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant() ); } });
方案二:注入自定义JavaScript(灵活不受顺序影响)
如果需要固定默认版本,不受注册顺序限制,可以通过InjectJavascript方法注入脚本,强制修改下拉菜单的选中项:
app.UseSwaggerUI(options => { foreach (var description in provider.ApiVersionDescriptions) { options.SwaggerEndpoint( $"/{basePath}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant() ); } // 注入脚本,默认选中v2版本(替换为你的目标版本) options.InjectJavascript(async context => { var targetSwaggerUrl = $"/{basePath}/swagger/v2/swagger.json"; await context.Response.WriteAsync($@" window.addEventListener('load', function() {{ const versionSelect = document.querySelector('.topbar select'); if (versionSelect && versionSelect.value !== '{targetSwaggerUrl}') {{ versionSelect.value = '{targetSwaggerUrl}'; versionSelect.dispatchEvent(new Event('change')); }} }}); "); }); });
注意事项
- 替换代码中的
v2为你实际想要设为默认的版本标识 - 确保
targetSwaggerUrl与你注册SwaggerEndpoint时的URL完全一致
内容的提问来源于stack exchange,提问作者Brandon
相关产品推荐
相关产品推荐

