程序地带

.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设置xml文档注释路径
//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
var xmlPath = Path.Combine(basePath, "SwaggerCoreTest.xml");
var xmlPath2 = Path.Combine(basePath, "SwaggerCode.xml");
c.IncludeXmlComments(xmlPath, true);//true为控制器注释也读取出来
c.IncludeXmlComments(xmlPath2);
c.CustomSchemaIds((type) => 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
});
设置生成XML文件,项目-属性-生成,勾选xml文档文件




 


配置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();
}
}

 


  采坑:发布项目后,在服务器项目中未找到对应的xml文件,处理方式:修改有生成xml文件的的项目的csproj,添加配置,比如API项目和Model项目都会生成xml文件,则两个项目的csproj文件都加上以下配置。


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

 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/peng0518/p/14207458.html

随机推荐

设计模式——行为型之命令模式

设计模式——行为型之命令模式将逻辑完全无关的若干行为,封装成一个个对象,由服务提供者暴露出一个统一的接口无差别调用,这样的行为叫命令模式命令模式将函数封装成对...

大造梦家 阅读(261)

Java学习笔记(18)——数学类、时间

数学类//数学类//math//提供了大量的基本的数学运算最终类//三角函数正弦值向上向下取整ceilfloor//四舍五入round//产生随机数random大于等于0小于1//加一个数和乘一个数可...

字符传送门 阅读(280)

HALCON 20.11:深度学习笔记(1)

HALCON20.11:深度学习笔记(1)HALCON20.11.0.0中,实现了以下深度学习方法:1.AnomalyDetection(异常检...

机器视觉001 阅读(643)

面向对象4-类与对象的创建

类与对象的关系类是一种抽象的数据类型,他是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物动物、植物、手机、电脑Person类、Pet类、Car类等,...

是小小番茄呀 阅读(220)

判断能否形成等差数列

leetcode刷题37——判断能否形成等差数列2020.11.21题目思路解法题目给你一个数字数组arr。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就...

一只猫毛 阅读(444)