Mat*_*ard 3 swagger .net-6.0 minimal-apis
我正在尝试以最小的 API 掌握 swagger 的窍门。我有以下代码:
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(setup => setup.SwaggerDoc("v1", new OpenApiInfo()
{
Description = "An api that will change your life for ever",
Title = "Alert Api",
Version = "v1",
Contact = new OpenApiContact()
{
Name = "Grundfos",
Url = new Uri("https://grundfos.com")
}
}));
WebApplication app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//Map endpoints
app.MapGet("/alerts", async () => Results.Ok());
app.MapGet("/profiles", async () => Results.Ok());
Run Code Online (Sandbox Code Playgroud)
这给出了一个看起来像这样的 swagger UI:
我的问题是:如何将端点排序到名为“警报”和“配置文件”的标题下?
我认为你所追求的就是所谓的Tags招摇。
您可以WithTags在映射的末尾添加,如下所示:
//Map endpoints
app.MapGet("/alerts", async () => Results.Ok()).WithTags("Alerts");
app.MapGet("/profiles", async () => Results.Ok()).WithTags("Profiles");
Run Code Online (Sandbox Code Playgroud)
结果如下:
或者,您也可以通过配置AddSwaggerGen方法来采取另一种方法。
在那里,您可以获取 URL 端点的第一段并将其用作标签名称。
例如,端点alerts和alerts/delete都将放置在名为 的部分中alerts。
builder.Services.AddSwaggerGen(c =>
{
c.TagActionsBy(d =>
{
var rootSegment = d.RelativePath?
.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault() ?? "Home";
return new List<string> { rootSegment! };
});
})
//Map endpoints without 'WithTags`
app.MapGet("/alerts", async () => Results.Ok());
app.MapGet("/alerts/delete", async () => Results.Ok());
app.MapGet("/profiles", async () => Results.Ok());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1941 次 |
| 最近记录: |