Asp.net core Swagger实现API在线文档及API调用调试控制台(超详细)

-- Asp.net core Swagger 接口文档及在线API调试
【官网】:https://swagger.io/

应用场景

Swagger是最主流的API开发工具,符合OpenAPI规范,可根据API接口及注释自动生成API在线文档(同时也是在线调用调试控制台),它可以贯穿于整个API生态,比如API的设计、编写API文档等。而且Swagger是一种通用的、与具体编程语言无关的API描述规范.

基础资源

Swashbuckle.AspNetCore,Microsoft.Extensions.PlatformAbstractions,.net core 3.1

使用须知

为什么使用Swagger作为API文档生成工具? 1)Swagger 可以生成一个具有互动性的API在线文档及调用测试控制台,开发者可以用来快速学习和尝试API。 2)Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。 3)Swagger 文件可以在许多不同的平台上从代码注释中自动生成。 4)Swagger 有一个强大的社区,里面有许多强悍的贡献者。

配置步骤

A)为什么要使用Swagger及Swagger的效果预览。

为什么使用Swagger作为API文档生成工具?
1)Swagger 可以生成一个具有互动性的API在线文档及调用测试控制台,开发者可以用来快速学习和尝试API。
2)Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。
3)Swagger 文件可以在许多不同的平台上从代码注释中自动生成。
4)Swagger 有一个强大的社区,里面有许多强悍的贡献者。

效果预览如下:  

B)Swagger基础应用。

step1) 针对controller项目,安装相关的基础包.

  1.1) 在NuGet里面搜索Swashbuckle.AspNetCore包进行安装.  (仅安装这个,无参数注释)
   1.2) 在nuget中搜索安装Microsoft.Extensions.PlatformAbstractions包 (该包解决参数注释的显示)。

step2)在Startup类的ConfigureServices方法里面注入服务

            // 添加Swagger
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "API Swagger Doc Demo (@http://config.net.cn)", 
                    Version = "v1" ,
                    Description = "API Swagger Doc Demo",
                    TermsOfService =new Uri("http://config.net.cn"),
                    Contact = new OpenApiContact
                    {
                        Name = "配置啦",
                        Email = string.Empty,
                        Url =new Uri("http://config.net.cn")
                    },
                    License = new OpenApiLicense
                    {
                        Name = "来自配置啦授权",
                        Url = new Uri("http://www.cnblogs.com/yilezhu/")
                    }
                });
                #region//add method and params notes (Microsoft.Extensions.PlatformAbstractions包相关的配置) // 获取xml文件名
                //var basePath = AppContext.BaseDirectory;//仅支持windows下,linux下不正常
                var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//这里支持window,linux
                var xmlPath = Path.Combine(basePath, "ConfigLab.Dnc.Tester.xml");//自动生成的文件名格式: "项目名+.xml"
                c.IncludeXmlComments(xmlPath, true);// 添加控制器层注释,true表示显示控制器注释
                #endregion//add method and params notes (Microsoft.Extensions.PlatformAbstractions包相关的配置) });

                   services.AddControllers();//asp.net core 3.1项目自带的服务设置.

step3)在Startup类的Configure方法里面添加Swagger有关的中间件

            #region// 添加Swagger有关中间件
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "ConfigLab Api Swagger v1");//这里又可以被第三方的api测试平台等读取,避免手工录入
            });
            #endregion// 添加Swagger有关中间件
            app.UseRouting();
            app.UseAuthorization();

step4)设置项目的XML文档路径。

 


注:


     //var basePath = AppContext.BaseDirectory;//仅支持windows下,linux下不正常
     var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//这里支持window,linux
     var xmlPath = Path.Combine(basePath, "ConfigLab.Dnc.Tester.xml");//自动生成的文件名格式: "项目名+.xml"

step5)代码中添加类,方法,参数级别的注释。

 

效果预览:

C)Swagger高级应用。

c1)利用api调用控制台测试API,比postman更爽。

   step1)进入指定api.

   step2)填写参数信息

   step3)查看请求结果

常见问题

快速入门

参考资料

51La