2020-12-29

.net core 3.1 + Swagger 5.0 初步配置

  附言:账号创建到现在也6年多了,都没有写过任何文章,第一次试水,见谅。这文章是之前.net framework 转到.net core,搭建swagger的时候,写在云笔记里面。

  废话不说,进入正文。

  • vs2019创建webapi项目,Nuget引入Swashbuckle.AspNetCore

  • Startup.cs添加相关配置
    • ConfigureServices 方法中添加配置,注意大小写,linux系统区分大小写
    • //注册Swagger生成器,定义一个和多个Swagger 文档   services.AddSwaggerGen(c =>   {    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });    // 为 Swagger JSON and UI设置//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)    var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);    var "SwaggerCoreTest.");    var "SwaggerCode.");    c.Includetrue);//true为控制器注释也读取出来    c.Include=> type.FullName);// 解决相同类名会报错的问题   });

    • Configure方法中添加配置代码
    • //启用中间件服务生成Swagger作为JSON终结点   app.UseSwagger();   //启用中间件服务对swagger-ui,指定Swagger JSON终结点   app.UseSwaggerUI(c =>   {    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");    c.RoutePrefix = string.Empty;//设置首页为Swagger    //c.DocExpansion(DocExpansion.None);//设置为none可折叠所有方法    c.DefaultModelsExpandDepth(-1);//设置为-1 可不显示models   });

  • 设置生成



 

  • 配置Authorization,在AddSwaggerGen中添加

 

//添加一个必须的全局安全信息,和AddSecurityDefinition方法指定的方案名称要一致,这里是Bearer。    c.AddSecurityRequirement(new OpenApiSecurityRequirement {     {      new OpenApiSecurityScheme      {       Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = JwtBearerDefaults.AuthenticationScheme }      },      new string[] { }     }    });    c.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, new OpenApiSecurityScheme    {     Description = "JWT授权(数据将在请求头中进行传输) 参数结构: \"Authorization: Bearer {token}\"",     Name = "Authorization",//jwt默认的参数名称     In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中)     Type = SecuritySchemeType.ApiKey    });

 

  • 配置接口不对外展示 ,在控制器/行为中添加标签特性:[ApiExplorerSettings(IgnoreApi = true)],如
 /// <summary> /// 测试接口 /// </summary> [AllowAnonymous] [ApiController] public class TestController : ControllerBase {  /// <summary>  /// Get  /// </summary>  /// <returns></returns>  [HttpGet]  [Route("api/[controller]")]  [ApiExplorerSettings(IgnoreApi = true)]  public string Get()  {   return DateTime.Now.ToString();  } }

 

  采坑:发布项目后,在服务器项目中未找到对应的

<PropertyGroup> <GenerateDocumentationFile>true</GenerateDocumentationFile></PropertyGroup>

 









原文转载:http://www.shaoqun.com/a/504382.html

跨境电商:https://www.ikjzd.com/

c88:https://www.ikjzd.com/w/1017.html

自贸区跨境通网站:https://www.ikjzd.com/w/1329


附言:账号创建到现在也6年多了,都没有写过任何文章,第一次试水,见谅。这文章是之前.netframework转到.netcore,搭建swagger的时候,写在云笔记里面。  废话不说,进入正文。vs2019创建webapi项目,Nuget引入Swashbuckle.AspNetCoreStartup.cs添加相关配置ConfigureServices方法中添加配置,注意大小写,linux系统区分
reverb:reverb
myshow:myshow
江西南昌特产:李渡毛笔 - :江西南昌特产:李渡毛笔 -
小鸟天堂在哪里?好玩吗?:小鸟天堂在哪里?好玩吗?
都江堰龙池7月重新开放 - :都江堰龙池7月重新开放 -

No comments:

Post a Comment