背景: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