.Net5中使用Swagger

18 篇文章 3 订阅

背景:Swagger的好处真是很多,可以作为前后端的沟通桥梁,也可以作为调试接口的入口,方便快捷,提升开发效率,下边将记录一下在.NetCore中使用Swagger

1.引用Nuget包--Swashbuckle.AspNetCore

 

2.在Startup.cs中ConfigureServices中添加Swagger服务

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

其中配置启用了token验证

3.在Configure中添加swagger管道

 if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "SwaggerDemo v1"));
            }

这样就好了

4.如果需要在swagger中对接口控制器分组以及需要在swagger中配置基于header的token认证,可以加一些配置

ConfigureServices中:

services.AddSwaggerGen(s =>
                {
                    Dictionary<string, string> swaggerDic = new Dictionary<string, string>() {
            {"Common","公用接口" },
            {"User","用户管理接口" }
        };
                    foreach (KeyValuePair<string, string> kv in swaggerDic)
                    {
                        //第一个参数,必须与 api 的 GroupName 所使用的值保持一致。
                        s.SwaggerDoc(kv.Key, new OpenApiInfo()
                        {
                            Version = "v1",//标题的右上角显示
                            Title = $"{kv.Value} API",
                            Description = $" {kv.Value} api 文档"
                        });
                    }

                    s.IncludeXmlComments("WebApp.xml");

                    //启用添加token验证输入地方
                    s.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                    {
                        Description = "JWT授权(数据将在请求头中进行传输) 直接在下框中输入{token}\"",
                        Name = "token",//jwt默认的参数名称
                        In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中)
                        Type = SecuritySchemeType.ApiKey
                    });

                    s.AddSecurityRequirement(new OpenApiSecurityRequirement
                    {
                        {new OpenApiSecurityScheme
                        {
                            Reference=new OpenApiReference()
                            {
                                Id="Bearer",
                                Type=ReferenceType.SecurityScheme
                            }
                        },Array.Empty<string>() }
                    });
                });

Configure:

 app.UseSwagger();
 app.UseSwaggerUI(s =>
 {
    Dictionary<string, string> swaggerDic = new Dictionary<string, string>() {
            {"Common","公用接口" },
            {"User","用户管理接口" }
        };
    //配置每个控制器的地址
    foreach (KeyValuePair<string, string> kv in CommonUtils.swaggerDic)
    {
      s.SwaggerEndpoint($"/swagger/{kv.Key}/swagger.json", kv.Value);//第一个参数必须与SwaggerDoc方法的第一个方法的参数保持一致, 最后一个参数是筛选条件
     }
  });

提示:在VS2019中创建.net 5的webapi时,通过勾选“启用openAPI”直接启用swagger

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值