Asp.Net Core Swagger 按字母顺序对标签进行排序

spa*_*eet 8 .net c# swagger swagger-ui asp.net-core

我正在使用 asp.net core 6 和 Swashbuckle.AspNetCore

我在我的操作中使用 SwaggerAnnotations

但我的标签组没有排序

这是我的 Swagger UI 页面

在此输入图像描述


我的程序.cs:

builder.Services.AddSwaggerGen(c => {
  c.SwaggerDoc("v1", new OpenApiInfo {
    Title = "Api", Version = "v1"
  });
  c.EnableAnnotations();
});

 ....

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI(c => {
  c.SwaggerEndpoint("/swagger/v1/swagger.json", "Shoppy.WebApi");
  c.InjectStylesheet("/swagger-ui/css/custom.css");
});

Run Code Online (Sandbox Code Playgroud)

spa*_*eet 10

我得到了解决方案

我创建了这个自定义 DocumentFiler,它对标签进行排序

public class OrderTagsDocumentFilter: IDocumentFilter 
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) 
    {
        swaggerDoc.Tags = swaggerDoc.Tags
             .OrderBy(x => x.Name).ToList();
    }
}

Run Code Online (Sandbox Code Playgroud)

并将其添加到 Program.cs


services.AddSwaggerGen(c => {
  c.SwaggerDoc("v1", new OpenApiInfo {
    Title = "Shoppy.WebApi", Version = "v1"
  });
  c.EnableAnnotations();

  c.DocumentFilter<OrderTagsDocumentFilter>();
});

Run Code Online (Sandbox Code Playgroud)


小智 6

您也可以使用这样的配置字符串来完成

app.UseSwaggerUI(c =>
{
    c.ConfigObject.AdditionalItems.Add("tagsSorter", "alpha");
    ...
});
Run Code Online (Sandbox Code Playgroud)