Aks*_*sim 9 c# swagger swashbuckle
我需要在单个 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"
});
});
services.AddSwaggerGen(c =>
{
c.DocumentFilter<PrivateApiSwaggerFilter>();
c.SwaggerDoc("v0.1_private", new OpenApiInfo
{
Title = "Private API",
Version = "v0.1"
});
});
...
}
Run Code Online (Sandbox Code Playgroud)
然后提供 Swagger UI https://localhost:port/swagger,并且两个端点都列在下拉菜单中。
https://locahost:port/private/swagger当另一个在路线上而另一个在路线上https://locahost:port/public/swagger并且每个 UI 仅显示上述端点之一时,如何创建两个 swagger UI ?
小智 -3
您需要将私人和公共控制器分成单独的应用程序。这样做也是有益的,因为您不想将可公开访问的 API 与内部 API 混合在一起。这样维护起来会更容易。
如果它是您所需要的特定 URL 约定,则可以由 IIS 或您用于托管应用程序的其他工具来处理。
| 归档时间: |
|
| 查看次数: |
3745 次 |
| 最近记录: |