.net core webapi swagger 分组显示

1.通过nuget安装swagger

2.startup.cs 中的ConfigureServices中添加 c.SwaggerDoc

                c.SwaggerDoc("v1",
                    new OpenApiInfo
                    {
                        Title = "xxx平台",
                        Version = "v1",
                        Contact = new OpenApiContact
                        {
                            Email = "xxx@xxx.com",
                            Name = "xxx",
                            Url = new Uri("http://www.xxx.com")
                        }
                    });

                c.SwaggerDoc("v2",
                   new OpenApiInfo
                   {
                       Title = "xxx平台2",
                       Version = "v2",
                       Contact = new OpenApiContact
                       {
                           Email = "xxx@xxx.com",
                           Name = "xxx",
                           Url = new Uri("http://www.xxx.com")
                       }
                   });

        public void ConfigureServices(IServiceCollection services)
        {
            // 首先取出appsettings中的连接字符串,注意参数名应与appsettings中键一致
            var connectionString = AppSettingsHelper.Configuration["DBConnStr:MySQL:ConnectionString"];
            // 类型是生成的上下文类名
            services.AddDbContext<wlcloudContext>(options => options.UseMySql(connectionString));

            services.AddScoped<ITestRepository, TestRepository>();
           // services.AddScoped<IRedis, Redis>();

            //services.AddControllers().AddNewtonsoftJson(option =>
            //    //忽略循环引用
            //    option.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            //);

            services.AddControllers();


            services.AddMvc().AddJsonOptions(o =>
            {
                o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve;
                o.JsonSerializerOptions.MaxDepth = 0;
            });

            services.AddCors(m => m.AddPolicy(Any, a => a.SetIsOriginAllowed(_ => true).AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
            //注册swagger服务
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1",
                    new OpenApiInfo
                    {
                        Title = "xxx平台",
                        Version = "v1",
                        Contact = new OpenApiContact
                        {
                            Email = "xxx@xxx.com",
                            Name = "xxx",
                            Url = new Uri("http://www.xxx.com")
                        }
                    });

                c.SwaggerDoc("v2",
                   new OpenApiInfo
                   {
                       Title = "xxx平台2",
                       Version = "v2",
                       Contact = new OpenApiContact
                       {
                           Email = "xxx@xxx.com",
                           Name = "xxx",
                           Url = new Uri("http://www.xxx.com")
                       }
                   });

                // 为 Swagger 设置xml文档注释路径
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
                c.AddSecurityDefinition("Bearer",
                    new OpenApiSecurityScheme
                    {
                        Description = "请输入OAuth接口返回的Token,前置Bearer。示例:Bearer {Roken}",
                        Name = "Authorization",
                        In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中)
                        Type = SecuritySchemeType.ApiKey
                    });
                c.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                   {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference()
                            {
                                Id = "Bearer",
                                Type = ReferenceType.SecurityScheme
                            }
                        }, Array.Empty<string>()
                    }
                });
            }); 
        }

3.startup.cs中Configure中添加

             c.SwaggerEndpoint("/swagger/v1/swagger.json", "WLCloudAPI");
                c.SwaggerEndpoint("/swagger/v2/swagger.json", "WLCloudAPI2");

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();
           // app.UseMvc();
            app.UseRouting();
            //允许跨域 位置和必须放对,否则加载出错
            app.UseCors(Any);
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            //可以将Swagger的UI页面配置在Configure的开发环境之中
            app.UseSwagger();
            //和Swagger UI
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "WLCloudAPI");
                c.SwaggerEndpoint("/swagger/v2/swagger.json", "WLCloudAPI2");
                c.RoutePrefix = string.Empty;
            });
        }

4.在controller中增加    [ApiExplorerSettings(GroupName ="v1")]即可分组

    [ApiController]
    [ApiExplorerSettings(GroupName ="v1")]
    [EnableCors("Any")]
    [Route("api/[controller]")]
    public class testController : Controller
    {
        private readonly ITestRepository _testRepository; 
        // 注入ComponanyRepository,就可以直接在控制器中使用其方法了
        public testController(ITestRepository testRepository)
        {
            //var sh = new SHA1Managed();
            //byte[] data = sh.ComputeHash(Encoding.Unicode.GetBytes("easyboot"))
            //  return Convert.ToBase64String(data, Base64FormattingOptions.None);

            _testRepository = testRepository; 
        }

        [HttpGet]
        public async Task<IEnumerable<Test>> Get1()
        {
          return await _testRepository.GetTest();

        } 
    }

    [ApiController]
    [ApiExplorerSettings(GroupName = "v2")]
    [EnableCors("Any")]
    [Route("api/[controller]")]
    public class RedisController : Controller
    {
      // private readonly IRedis _IRedis;
        // 注入ComponanyRepository,就可以直接在控制器中使用其方法了
        //public RedisController(IRedis Redis)
        //{
        // // _IRedis = Redis;
        //}

        [HttpGet]
        public  Dictionary<string, string> Get(string key)
        {
            //var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,defaultDatabase=0");//,prefix = my_
            //string s = csredis.Get(key);
            //object o = WLCloudAPI.util.RedisHelper.csredis.Get<object>(key);
           Dictionary<string,string> d= WLCloudAPI.util.RedisHelper.csredis.HGetAll(key);
            // string s = WLCloudAPI.util.RedisHelper.csredis.Get(key);
            return d;
            //csredis.get
            // return  _IRedis.Get1(key);

        }

        //[HttpGet]
        //public async Task<object> Get2(string key)
        //{
        //    var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=0,prefix=my_");
        //    return csredis.Get(key);
        //    //csredis.get
        //    // return  _IRedis.Get1(key);

        //}

        //[HttpPost]
        //public async Task<object> Get2(string key)
        //{
        //    return _IRedis.Get(key);

        //}

    }

 

 4 可以看到版本选择

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值