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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 @   桃花雪  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示