我需要在单个 C# ASP.NET Core 应用程序上提供多个 swagger UI。这是必需的,因为应用程序 API 包含用于 UI 和其他内容的内部“私有”API 以及可由其他应用程序和用户访问的“公共”API。
每个 Swagger 端点都应该位于其自己的 swagger UI 页面上,并具有不同的 URL 地址。我可以使用以下方法代码将现有 API 规范划分为两个不同的 json 文件和不同路径中的 json 文件Startup.cs Configure:
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");
});
...
}
Run Code Online (Sandbox Code Playgroud)
我通过过滤并添加两个 Swagger 生成器来划分规范Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSwaggerGen(c =>
{
c.DocumentFilter<PublicAPISwaggerFilter>();
c.SwaggerDoc("v0.1_public", new OpenApiInfo
{
Title = "Public API",
Version = "v0.1"
});
}); …Run Code Online (Sandbox Code Playgroud)