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

Asp.Net Core Swagger Sort Tags Alphabetically

我正在使用 asp.net 核心 6 & Swashbuckle.AspNetCore

并且我在我的操作中使用了 SwaggerAnnotations

但是我的标签组没有排序

这是我的 Swagger UI 页面


我的 Program.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");
});

我得到了解决方案

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

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

并将其添加到 Program.cs


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

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