美文网首页
.net core 6.0 Web API Swagger接口文

.net core 6.0 Web API Swagger接口文

作者: leblanc_i | 来源:发表于2022-09-27 18:18 被阅读0次

    微软官网文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-6.0&tabs=visual-studio

    一、接口注释

    1、在控制器和方法上面添加类似下面的注释
            /// <summary>
            /// 获取天气
            /// </summary>
            /// <returns></returns>
    
    2、添加GenerateDocumentationFile, 有两种方式
    (1)方式一:右键项目--选择属性,然后找到生成包含API文档的文件并勾选(如下图)
    DC6EF753825DAF7A73F011100E882985.png
    (2)方式二:右键项目 -- 编辑项目文件,然后在PropertyGroup中直接添加键 GenerateDocumentationFile,值为 True
      <PropertyGroup>
        <GenerateDocumentationFile>True</GenerateDocumentationFile>
      </PropertyGroup>
    
    3、在 Program.cs 中找到builder.Services.AddSwaggerGen();,直接替换为下面代码,运行工程即可
    builder.Services.AddSwaggerGen(options => {
        // 注释
        var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
        // 第二个参数为是否显示控制器注释,我们选择true
        options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename), true);
        // 生成多个文档显示
        typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
        {
            //添加文档介绍
            options.SwaggerDoc(version, new OpenApiInfo
            {
                Title = $"项目名",
                Version = version,
                Description = $"项目名:{version}版本"
            });
        });
    });
    

    二、版本控制

    1、创建一个枚举类
    /// <summary>
    /// Api版本枚举类
    /// </summary>
    public enum ApiVersions
    {
        /// <summary>
        /// 版本V1
        /// </summary>
        V1 = 1,
        /// <summary>
        /// 版本V2
        /// </summary>
        V2 = 2
    }
    
    2、在 Program.cs 中找到builder.Services.AddSwaggerGen();,添加替换为如下代码
    builder.Services.AddSwaggerGen(options =>
    {
        // 生成多个文档显示
        typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
        {
            // 添加文档介绍
            options.SwaggerDoc(version, new OpenApiInfo
            {
                Title = $"项目名",
                Version = version,
                Description = $"项目名:{version}版本"
            });
        });
    });
    
    3、在 Program.cs 中找到builder.Services.UseSwaggerUI();,替换为如下代码
        app.UseSwaggerUI(options =>
        {
            //options.SwaggerEndpoint($"/swagger/V1/swagger.json", $"版本选择:V1");
            //如果只有一个版本也要和上方保持一致
            typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
            {
                //切换版本操作
                //参数一是使用的哪个json文件,参数二就是个名字
                options.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"版本选择:{version}");
            });
        });
    
    4、在对应方法上添加[ApiExplorerSettings(GroupName = "V1")],然后运行工程即可
            /// <summary>
            /// 获取天气
            /// </summary>
            /// <returns></returns>
            [ApiExplorerSettings(GroupName = "V1")]
            [HttpGet(Name = "GetWeatherForecast")]
            public IEnumerable<WeatherForecast> Get()
            {
                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();
            }
    
            /// <summary>
            /// 获取天气版本2
            /// </summary>
            /// <returns></returns>
            [ApiExplorerSettings(GroupName = "V2")]
            [HttpGet]
            [Route("~/GetWeatherForecast2")]
            public IEnumerable<WeatherForecast> Get2()
            {
                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();
            }
    
    swagger.png

    相关文章

      网友评论

          本文标题:.net core 6.0 Web API Swagger接口文

          本文链接:https://www.haomeiwen.com/subject/brbcartx.html