【问题标题】:ASP.NET Core 6.0 Minimal API / Swagger tagsASP.NET Core 6.0 Minimal API / Swagger 标签
【发布时间】:2021-09-28 05:13:42
【问题描述】:

有没有什么方法可以更改使用最少 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! };
    });
});

见我的blog post

【问题讨论】:

    标签: asp.net-core swagger swashbuckle.aspnetcore


    【解决方案1】:

    我认为默认情况下共享同一路由的所有操作都会被分组

    但要明确定义组,您需要使用swagger tag,它可以像这样使用:

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

    link for controller approach

    【讨论】:

    • 嗨,谢谢。我试过 SwaggerOperation ,不幸的是它没有帮助。 (编辑来源问题)
    • 您尝试过accepted answer 中的方法吗? @Mino
    • 您好,非常感谢。不幸的是,SwaggerOperation 无法使用,但这个想法很好,让我找到了解决方案。请参阅我的问题的更新。再次感谢您
    • 可以使用新的WithTags方法gist.github.com/davidfowl/…
    【解决方案2】:

    怎么样:

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

    【讨论】:

    • 我得到“'RouteHandlerBuilder'类型没有定义字段、构造函数或成员'WithTags'”
    猜你喜欢
    • 1970-01-01
    • 2022-12-14
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2018-08-15
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多