ASP.NET Core WebAPI中搭建Swagger Api文档

时间:2020-03-26
本文章向大家介绍ASP.NET Core WebAPI中搭建Swagger Api文档,主要包括ASP.NET Core WebAPI中搭建Swagger Api文档使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.Swagger优点?

相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其实无论是前端调用后端,还是后端调用后端,都期望有一个好的接口文档。但是这个接口文档对于程序员来说,就跟注释一样,经常会抱怨别人写的代码没有写注释,然而自己写起代码起来,最讨厌的,也是写注释。所以仅仅只通过强制来规范大家是不够的,随着时间推移,版本迭代,接口文档往往很容易就跟不上代码了。
Swagger UI:提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。

2.基于Asp.Net Core 搭建Swagger

NuGet安装Swagger程序包

3.在项目中添加及设置ConfigureServices中间件

在Startup类的ConfigureServices方法添加如下代码,使项目中添加ConfigureServices中间件

#region Swagger
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Version = "v1",
                    Title = "Api Swagger",
                    Description = "Api说明文档",
                    TermsOfService = "None",
                    Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "Api.Swagger", Email = "2274367387@qq.com", Url = "https://github.com/ZhengHengWU" }
                });
                //如果不加入以下两个xml 也是可以的 但是不会对api有中文说明,使用了一下两个xml 就需要对成员使用///注释
                //本webapi的xml
                var basePath = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath;
                var xmlPath = Path.Combine(basePath, "Api.xml");//这个就是刚刚配置的xml文件名
                c.IncludeXmlComments(xmlPath, true);//默认的第二个参数是false,这个是controller的注释,记得修改
                c.OperationFilter<AddAuthTokenHeaderParameter>();
            });
            #endregion

在Startup类的Configure,使项目能够使用ConfigureServices中间件

           #region Swagger
            app.UseSwagger(c =>
            {
                c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
                {
                    swaggerDoc.Host = httpReq.Host.Value;
                });
            });
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
                c.RoutePrefix = string.Empty;
                c.DefaultModelExpandDepth(1);
                c.DefaultModelRendering(ModelRendering.Example);
                c.DefaultModelsExpandDepth(1);
                c.DisplayOperationId();
                c.DisplayRequestDuration();
                c.DocExpansion(DocExpansion.None);
                c.EnableDeepLinking();
                c.EnableFilter();
                c.MaxDisplayedTags(5);
                c.ShowExtensions();
                c.EnableValidator();
                c.SupportedSubmitMethods(SubmitMethod.Get, SubmitMethod.Post);
            });
            #endregion

4.启用XML 注释

5.运行调试

原文地址:https://www.cnblogs.com/ZhengHengWU/p/12574307.html