ASP.NET Core 6.0 最小 API / Swagger 标签

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

有没有办法更改用最少的 api 编写的给定

http
方法的标签?

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

...

app.MapGet("/todo", () => "Hello world");

这样我就可以在文档中对方法进行逻辑分组,类似于它们在控制器中的方法。

已编辑

我尝试过(来自@Modar Na的提示)

SwaggerOperation
,不幸的是它没有帮助。

app.MapGet("/todo", [SwaggerOperation(Tags = new[] { "ToDo" })]() => "Hello world");
app.MapPost("/todo", [SwaggerOperation(Tags = new[] { "ToDo" })]() => "Hello world");

app.MapGet("/projects", [SwaggerOperation(Tags = new[] { "Projects" })]() => "Hello world");
app.MapPost("/projects", [SwaggerOperation(Tags = new[] { "Projects" })]() => "Hello world");

更新了

作为解决方法,我在配置 swagger 生成器时使用了

TagActionsBy
方法。

builder.Services.AddSwaggerGen(c =>
{
    c.TagActionsBy(d =>
    {
        return new List<string>() { d.ActionDescriptor.DisplayName! };
    });
});

请参阅我的博客文章

asp.net-core swagger swashbuckle.aspnetcore
2个回答
10
投票

怎么样

WithTags
:

app.MapGet("/todo", () => "Hello world").WithTags("ToDo");

2
投票

我认为共享同一路线的所有操作都会默认分组

但是要明确定义组,您需要使用 swagger 标签,可以像这样使用:

app.MapGet("/todo", [SwaggerOperation(Tags = new[] { "MyTag" })]() => "Hello world");

控制器方法链接

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