.NetCore WebApi —— Swagger版本控制
目录:
.NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)
.NetCore WebApi —— Swagger版本控制
版本控制的好处是显而易见的,利用Swagger展示不同版本的API更能体现效果。
1.安装Nuget包:Microsoft.AspNetCore.Mvc.Versioning
2. 配置Startup类
2.1 添加新成员 ,用来获取API版本信息
/// <summary> /// Api版本信息 /// </summary> private IApiVersionDescriptionProvider provider;
2.2 在 ConfigureServices 方法中注册服务
services.AddApiVersioning(option => { // 可选,为true时API返回支持的版本信息 option.ReportApiVersions = true; // 不提供版本时,默认为1.0 option.AssumeDefaultVersionWhenUnspecified = true; // 请求中未指定版本时默认为1.0 option.DefaultApiVersion = new ApiVersion(1, 0); }).AddVersionedApiExplorer(option => {
// 版本名的格式:v+版本号 option.GroupNameFormat = "'v'V"; option.AssumeDefaultVersionWhenUnspecified = true; }); this.provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
2.3 遍历API版本信息,在原有的AddSwaggerGen方法中循环处理:红色部分
// 注册Swagger服务 services.AddSwaggerGen(c => { // 多版本控制 foreach (var item in provider.ApiVersionDescriptions) { // 添加文档信息 c.SwaggerDoc(item.GroupName, new Info { Title = "CoreWebApi", Version = item.ApiVersion.ToString(), Description = "ASP.NET CORE WebApi", Contact = new Contact { Name = "Jee", Email = "xiaomaprincess@gmail.com", Url = "https://www.cnblogs.com/jixiaosa/" } }); }
2.4 修改 Configure 方法中的 SwaggerUI方法,同样做循环处理
// 配置SwaggerUI app.UseSwaggerUI(c => { foreach (var item in provider.ApiVersionDescriptions) { //c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreAPI"); 单版本 c.SwaggerEndpoint($"/swagger/{item.GroupName}/swagger.json", "CoreAPI"+item.ApiVersion); } c.RoutePrefix = string.Empty; });
2.5 在控制器中应用
2.5.1 在Test控制器中添加特性标签以及路由。 1.0版本
2.5.1 在Value控制器中添加特性标签以及路由。 2.0版本
3. 启动项目查看效果
Gif
github: https://github.com/xiaoMaPrincess/Asp.NetCore-WebApi
多层架构版本:https://github.com/xiaoMaPrincess/.NetCoreWebApi
原作者:千金不如一默
作者: 王春天 出处: http://www.cnblogs.com/spring_wang/ Email: spring_best@yeah.net QQ交流:903639067
QQ群:322581894 关于作者: 大连天翼信息科技有限公司 技术总监。 SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。 专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。