.net core 2.1 Swagger 配置
1、先创建 .net core Web 应用程序,选择API
2、安装 Nuget 包:Swashbuckle.AspNetCore
Install-Package Swashbuckle.AspNetCore -Version 4.0.1
或者打开Nuget管理界面搜索Nlog.Web.AspNetCore(我安装的版本是V4.0.1)
3、注册依赖
通过修改Startup.cs里的ConfigureServices函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); #region 配置Swagger services.AddSwaggerGen(c => { #region 顶部基础信息 c.SwaggerDoc("v1", new Info { Version = "v1.1.0", Title = "WebAPI", Description = "API帮助文档", TermsOfService = "None", Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "NinaMua", Email = "791016081@qq.com", Url = "http://www.cnblogs.com/NinaMua" } }); #endregion }); #endregion }
4、使用中间件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); loggerFactory.AddNLog();//添加NLog env.ConfigureNLog("nlog.config");//读取Nlog配置文件 #region Swagger app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1"); }); #endregion app.UseMvc(); }
5、结果
当我们启动网页的时候,默认打开如下
把api/value 换成swagger
为了达到跑程序就默认打开swagger,需要去修改launchSetting.json
把launchUrl 换成Swagger
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } },
跑下程序可以看到默认页已经变成swagger了~
7.接口说明
点击项目属性,生成XML文档
同样的存放实体类的类库也生成XML文档
注意~两个XML文档需在同一bin路径下
给控制器添加说明
/*用标红的方式给控制器添加注解*/
/// <summary>
/// 登录
/// </summary>
/// <returns></returns>
[Route("Login")]
[HttpGet]
public ResponseMessage Login()
{
return new ResponseMessage
{
Code = 0,
Message = "123",
Data ="我是结果"
};
}
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary> /// 通用返回信息类 /// </summary> public class ResponseMessage { /// <summary> /// 操作结果Code /// </summary> public int Code { get; set; } /// <summary> /// 返回信息 /// </summary> public string Message { get; set; } /// <summary> /// 返回数据集合 /// </summary> public object Data { get; set; } }
然后要去修改Startup类中的ConfigureServices方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); #region 配置Swagger services.AddSwaggerGen(c => { #region 顶部基础信息 c.SwaggerDoc("v1", new Info { Version = "v1.1.0", Title = "WebAPI", Description = "API帮助文档", TermsOfService = "None", Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "NinaMua", Email = "791016081@qq.com", Url = "http://www.cnblogs.com/NinaMua" } }); #endregion #region 添加读取注释服务 //添加对控制器的标签(描述)通过对SwaggerDocTag添加备注 //c.DocumentFilter<SwaggerDocTag>(); var basePath = AppDomain.CurrentDomain.BaseDirectory; var apiXmlPath = Path.Combine(basePath, "TestApi.xml"); if (System.IO.File.Exists(apiXmlPath)) c.IncludeXmlComments(apiXmlPath, true);//控制器层注释(true表示显示控制器注释) var entityXmlPath = Path.Combine(basePath, "TestEntity.xml"); if (System.IO.File.Exists(entityXmlPath)) c.IncludeXmlComments(entityXmlPath);//实体类注释 #endregion }); #endregion }
跑下程序看看
8 接口权限
需在中间件中添加权限的东西~
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); #region 配置Swagger services.AddSwaggerGen(c => { #region 顶部基础信息 c.SwaggerDoc("v1", new Info { Version = "v1.1.0", Title = "WebAPI", Description = "API帮助文档", TermsOfService = "None", Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "NinaMua", Email = "791016081@qq.com", Url = "http://www.cnblogs.com/NinaMua" } }); #endregion #region 权限验证信息 //添加一个必须的全局安全信息,和AddSecurityDefinition方法指定的方案名称要一致 var security = new Dictionary<string, IEnumerable<string>> { { "Bearer", new string[] { } } }; c.AddSecurityRequirement(security); c.AddSecurityDefinition("Bearer", new ApiKeyScheme { Description = "格式|Bearer {token}", Name = "Authorization",//jwt默认的参数名称 In = "header",//jwt默认在请求头中存放Authorization信息 Type = "apiKey" }); #endregion #region 添加读取注释服务 //添加对控制器的标签(描述)通过对SwaggerDocTag添加备注 //c.DocumentFilter<SwaggerDocTag>(); var basePath = AppDomain.CurrentDomain.BaseDirectory; var apiXmlPath = Path.Combine(basePath, "TestApi.xml"); if (System.IO.File.Exists(apiXmlPath)) c.IncludeXmlComments(apiXmlPath, true);//控制器层注释(true表示显示控制器注释) var entityXmlPath = Path.Combine(basePath, "TestEntity.xml"); if (System.IO.File.Exists(entityXmlPath)) c.IncludeXmlComments(entityXmlPath);//实体类注释 #endregion }); #endregion }
修改完之后运行程序,发现在接口后多了一个小锁
点击那个锁弹出界面如下
先就这样把~~权限之后在搞把~