.NET 6在Swagger添加简单版本控制

一,首先我们创建个枚举类

/// <summary>
/// Api版本枚举类
/// </summary>
public enum ApiVersions
{
   /// <summary>
   /// 版本V1
   /// </summary>
   V1=1,
   /// <summary>
   /// 版本V2
   /// </summary>
   V2=2
}

.二,然后添加如下代码

builder.Services.AddSwaggerGen(options => {
    /*
    //只有参数里的V1是要和下面配置路径保持一致,
    //剩下的乱写也不报错 但是不推荐
     options.SwaggerDoc("V1", new OpenApiInfo 
        {
            Title = $"项目名",
            Version = "V1",
            Description = $"项目名:V1版本"
        });
    */
    //生成多个文档显示
    typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
    {
        //添加文档介绍
        options.SwaggerDoc(version, new OpenApiInfo
        {
            Title = $"项目名",
            Version = version,
            Description = $"项目名:{version}版本"
        });
    });
});
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(options => {
        
        /*
         options.SwaggerEndpoint($"/swagger/V1/swagger.json",$"版本选择:V1");
        */
        //如果只有一个版本也要和上方保持一致
        typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
        {
            //切换版本操作
            //参数一是使用的哪个json文件,参数二就是个名字
            options.SwaggerEndpoint($"/swagger/{version}/swagger.json",$"版本选择:{version}");
        });
    });
}

三,最后在我们的控制器上方加上特性

[ApiExplorerSettings(GroupName ="V1")]
[HttpGet]
public IEnumerable<WeatherForecast> Get(Wea weather)
{
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
    })
    .ToArray();
}