如何在Swagger中为不同控制器配置独立的专属访问地址
实现Swagger多分组独立访问路径的配置方法
你现有的控制器特性标注、AddSwaggerGen 服务注册逻辑都无需修改,只需要调整Configure方法中的Swagger中间件配置即可,核心思路是为每个分组单独注册SwaggerUI中间件实例,指定独立的路由前缀。
修改后的Startup.cs Configure方法代码
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 保留Swagger生成中间件,可按需自定义swagger.json的存储路径 app.UseSwagger(c => { // 可选配置:自定义swagger.json的路由模板,默认是 "swagger/{documentName}/swagger.json" // 如果启用该配置,下方SwaggerEndpoint的路径需要同步修改为 "/docs/{分组名}/swagger.json" // c.RouteTemplate = "docs/{documentName}/swagger.json"; }); // 配置Test分组独立文档入口:对应访问地址 baseurl/docs/test/index.html app.UseSwaggerUI(c => { c.RoutePrefix = "docs/test"; c.SwaggerEndpoint("/swagger/Test/swagger.json", "Test 接口文档"); }); // 配置Test2分组独立文档入口:对应访问地址 baseurl/docs/test2/index.html app.UseSwaggerUI(c => { c.RoutePrefix = "docs/test2"; c.SwaggerEndpoint("/swagger/Test2/swagger.json", "Test2 接口文档"); }); // 其他原有中间件配置(如UseRouting、UseAuthorization等)保持不变 }
效果验证
启动项目后:
- 访问
{你的服务域名}/docs/test即可进入仅展示TestController接口的专属文档页 - 访问
{你的服务域名}/docs/test2即可进入仅展示Test2Controller接口的专属文档页 - 两个文档页完全独立,互不干扰
内容的提问来源于stack exchange,提问作者Mohamad Hasan Salmaaniyaan
相关产品推荐
相关产品推荐

