使用 [ApiExplorerSettings(GroupName = "CustomApiGroup")] 时如何将第二个 OpenAPI 文档添加到 swagger UI

问题描述 投票:0回答:1

如何在 ASP.NET Core 中向 swagger UI 添加第二个定义?

我知道使用

GroupName
ApiExplorerSettingsAttribute
属性我可以创建单独的 OpenApi 文档:

[ApiExplorerSettings(GroupName = "ABCv1")]
[ApiController]
[Route("api/[controller]")]
public AbcController
{
     [HttpGet("records")]
     public IActionResult GetRecords()....
}

开放 API 文档现在可通过 URL 访问:

/swagger/ABC_v1/swagger.json

但是,我在定义下拉列表中的

/swagger/index.html
处没有看到 swagger UI 中的文档:

asp.net swagger asp.net-core-webapi openapi swashbuckle
1个回答
0
投票

一个最小的例子:

程序.cs:

builder.Services.AddSwaggerGen(op =>
{
    op.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "My API",
        Version = "v1"
    });

    op.SwaggerDoc("ABCv1", new OpenApiInfo
    {
        Title = "My API",
        Version = "ABCv1"
    });
    //op.DocInclusionPredicate((name, api) => true);
});

......

app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
        options.SwaggerEndpoint("/swagger/ABCv1/swagger.json", "ABCv1");

        
    });

控制器:

[HttpGet(Name = "GetWeatherForecast")]
[ApiExplorerSettings(GroupName = "v1")]
public async Task<IActionResult> Get()
{
.......
}



[HttpGet]
        [Route("sign")]
        [ApiExplorerSettings(GroupName = "ABCv1")]
        
        public async Task<IActionResult> SignDocument(....)
        {
            return Ok();
        }

结果:

© www.soinside.com 2019 - 2024. All rights reserved.