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

o2rvlv0m  于 10个月前  发布在  Pig
关注(0)|答案(1)|浏览(120)

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

我明白了使用ApiExplorerSettingsAttributeGroupName属性可以创建单独的OpenApi文档:

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

字符串
Open API文档现在可以通过URL访问:/swagger/ABC_v1/swagger.json
但是,我在swagger UI中的/swagger/index.html定义下拉列表中没有看到该文档:


的数据

dfddblmv

dfddblmv1#

一个最小的例子:
program.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();
        }


测试结果:


的数据

相关问题