net8.0如何引用swagger并设置分组,添加注释,支持token?

using System.Reflection;
using Microsoft.OpenApi.Models;
using WebApplication2.Swagger;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>{
    //定义分组
    c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo() { Title= "用户接口", Version="v1"});
    c.SwaggerDoc("v2", new Microsoft.OpenApi.Models.OpenApiInfo() { Title = "公司接口", Version = "v2" });
    c.SwaggerDoc("v3", new Microsoft.OpenApi.Models.OpenApiInfo() { Title = "商品接口", Version = "v3" });

    // 设置XML文件路径并生成XML文件后引用,为Swagger接口添加注释
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    c.IncludeXmlComments(xmlPath);

    //配置Swagger支持token填写
    c.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme() {

        Description = "Bearer认证",
        Name = "Authorization",
        In = ParameterLocation.Header,
        Scheme = "bearer",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT"

    });

    c.AddSecurityRequirement(new OpenApiSecurityRequirement{
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "token" }
                        },
                        new List<string>()
                    }
                });


});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(c => {
        
        //接入分组
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "用户接口");
        c.SwaggerEndpoint("/swagger/v2/swagger.json", "公司接口");
        c.SwaggerEndpoint("/swagger/v3/swagger.json", "商品接口");
        c.RoutePrefix = "";//取消访问swagger的路径前缀;默认路径为/swagger
    });
   
}

//注意下面两行代码的顺序
app.UseHttpsRedirection();
app.UseAuthorization();

app.MapControllers();

app.Run();

 

posted @ 2025-02-14 00:06  桃花雪  阅读(179)  评论(0)    收藏  举报