按名称对 OpenAPI / Swagger 中的方法进行排序

Jac*_*ack 1 c# asp.net swagger .net-core asp.net-core

我想在 Swagger 索引上制作和排序 API 方法,并根据 Get、Post、Put 和 Delete 将它们分组。这些方法在我的页面上排序,如如何按路径对方法进行排序?。由于该页面上的解决方法太旧,我正在寻找可用于最新方法的解决方案。是否可以通过在 Startup.cs 等上进行配置更改来订购 ASP.NET Core 应用程序中的 API 方法?

Ren*_*ena 7

首先,安装包Swashbuckle.AspNetCore

Install-Package Swashbuckle.AspNetCore -Version 5.5.0
Run Code Online (Sandbox Code Playgroud)

然后你可以像下面这样配置:

services.AddSwaggerGen(c =>
{
    c.OrderActionsBy((apiDesc) => $"{apiDesc.ActionDescriptor.RouteValues["controller"]}_{apiDesc.RelativePath}");
    //...
});
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

更新:

如果您不包含控制器,只需使用:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.OrderActionsBy((apiDesc) => $"{apiDesc.RelativePath}");  //change here...
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseHttpsRedirection();
    app.UseSwagger();
      
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Test Version 1");
    });
    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
Run Code Online (Sandbox Code Playgroud)