【发布时间】:2023-02-07 16:08:44
【问题描述】:
我需要在单个 C# ASP.NET Core 应用程序上提供多个 swagger UI。这是必需的,因为应用程序 API 由用于 UI 和其他内容的内部“私有”API 和其他应用程序和用户可以访问的“公共”API 组成。
每个 Swagger 端点都应位于其自己的 Swagger UI 页面上,并具有不同的 URL 地址。我可以在Startup.csConfigure方法上使用此代码将现有的 API 规范划分为两个不同的 json 文件和不同路径中的 json 文件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseSwagger()
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v0.1_public/swagger.json", "Public API v0.1");
c.SwaggerEndpoint("v0.1_private/swagger.json", "Private API v0.1");
});
...
}
我通过在Startup.cs中过滤和添加两个Swagger生成器来划分规范:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSwaggerGen(c =>
{
c.DocumentFilter<PublicAPISwaggerFilter>();
c.SwaggerDoc("v0.1_public", new OpenApiInfo
{
Title = "Public API",
Version = "v0.1"
});
});
services.AddSwaggerGen(c =>
{
c.DocumentFilter<PrivateApiSwaggerFilter>();
c.SwaggerDoc("v0.1_private", new OpenApiInfo
{
Title = "Private API",
Version = "v0.1"
});
});
...
}
然后在https://localhost:port/swagger 上提供 Swagger UI,并且两个端点都列在下拉菜单中。
当另一个在路由 https://locahost:port/private/swagger 上而另一个在 https://locahost:port/public/swagger 并且每个都只显示上述端点之一时,我如何创建两个 swagger UI?
【问题讨论】:
-
你解决了吗?我也有同样的问题
标签: c# swagger swashbuckle