zoukankan      html  css  js  c++  java
  • Web API中使用Swagger进行版本控制

    添加API枚举类型

     /// <summary>
            /// 版本控制
            /// </summary>
            public enum ApiVersion
            {
                /// <summary>
                /// v1版本
                /// </summary>
                V1 = 1,
                /// <summary>
                /// v2版本
                /// </summary>
                V2 = 2
            }
    

    注册Swagger服务

     //遍历版本信息
                      typeof(ApiVersion).GetEnumNames().ToList().ForEach(version =>
                      {
                          c.SwaggerDoc(version, new OpenApiInfo
                          {
                              //Version = "v1", //版本号
                              Title = "SN博客 API", //标题
                              Description = "EFCore数据操作 ASP.NET Core Web API", //描述
                              TermsOfService = new Uri("https://example.com/terms"), //服务条款
                              Contact = new OpenApiContact
                              {
                                  Name = "Shayne Boyer", //联系人
                                  Email = string.Empty,  //邮箱
                                  Url = new Uri("https://twitter.com/spboyer"),//网站
                              },
                              License = new OpenApiLicense
                              {
                                  Name = "Use under LICX", //协议
                                  Url = new Uri("https://example.com/license"), //协议地址
                              }
                          });
                      });
    

    启用Swagger

      app.UseSwaggerUI(c =>
                {
    
                    typeof(ApiVersion).GetEnumNames().ToList().ForEach(version =>
                   {
                       c.IndexStream = () => GetType().GetTypeInfo()
                            .Assembly.GetManifestResourceStream("Snblog.index.html");
                       ////设置首页为Swagger
                       c.RoutePrefix = string.Empty;
                       //自定义页面 集成性能分析
                       c.SwaggerEndpoint($"/swagger/{version}/swagger.json", version);
                       ////设置为none可折叠所有方法
                       c.DocExpansion(DocExpansion.None);
                       ////设置为-1 可不显示models
                       c.DefaultModelsExpandDepth(-1);
                   });
                });
    

    在控制器中使用ApiExplorerSettings标记

    [ApiExplorerSettings(GroupName = "V1")]
    
  • 相关阅读:
    [导入]Interesting Finds: 2007.12.17
    [导入]Interesting Finds: 2007.12.15
    [导入]Interesting Finds: 2007.12.13
    Interesting Finds: 2007.12.22
    吾生也有涯,而知也无涯。
    Hello world
    学习了clipboard复制剪切插件的使用
    在博客园学习成长
    命名空间概述
    Linux vi/vim
  • 原文地址:https://www.cnblogs.com/ouyangkai/p/14618355.html
Copyright © 2011-2022 走看看