如何在 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 中的文档:
一个最小的例子:
程序.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();
}
结果: