热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Swagger自动生成ASP.NETCoreWebAPI的文档、在线帮助测试文档(ASP.NETCoreWebAPI自动生成文档)

对于开发人员来说,构建一个消费应用程序时去了解各种各样的API是一个巨大的挑战。在你的WebAPI项目中使用Swagger的.NETCore封装Swashbuckle可以帮助你创建

对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战。
在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你创建良好的文档和帮助页面。 Swashbuckle 可以通过修改 Startup.cs 作为一组 NuGet 包方便的加入项目。
Swashbuckle 是一个开源项目,为使用 ASP.NET Core MVC 构建的 Web APIs 生成 Swagger 文档。
Swagger 是一个机器可读的 RESTful API 表现层,它可以支持交互式文档、客户端 SDK 的生成和可被发现。

Swashbuckle 有两个核心的组件
Swashbuckle.SwaggerGen : 提供生成描述对象、方法、返回类型等的 JSON Swagger 文档的功能。
Swashbuckle.SwaggerUI : 是一个嵌入式版本的 Swagger UI 工具,使用 Swagger UI 强大的富文本表现形式来可定制化的来描述 Web API 的功能,并且包含内置的公共方法测试工具。

新建一个ASP.NET Core WebApi 项目,项目结构如下图所示:

技术分享

使用NUget进行添加Swashbuckle

1、工具->NUget包管理器->程序包管理器控制台

技术分享

2、在控制台输入: Install-Package Swashbuckle -Pre  按下回车键

技术分享

3、安装Swashbuckle完成:

技术分享

4、安装Swashbuckle完成后台项目的引用发生了变化:

技术分享

5、在 project.json 中添加多了一项配置 "Swashbuckle": "6.0.0-beta902" :

技术分享

7、启用 XML 注释, 在 Visual Studio 中右击项目并且选择 Properties 在 Output Settings 区域下面点击 XML Documentation file 。

技术分享

技术分享

9、在 project.json 中设置 “xmlDoc”: true 来启用 XML 注释。

技术分享

10、在Startup.cs类的 ConfigureServices 方法中,允许中间件提供和服务生成 JSON 文档以及 SwaggerUI。Configure 方法中把 SwaggerGen 添加到 services 集合。配置 Swagger 使用生成的 XML 文件

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Builder;
 6 using Microsoft.AspNetCore.Hosting;
 7 using Microsoft.Extensions.Configuration;
 8 using Microsoft.Extensions.DependencyInjection;
 9 using Microsoft.Extensions.Logging;
10 using Microsoft.Extensions.PlatformAbstractions;
11 using Swashbuckle.Swagger.Model;
12 
13 namespace dotNetCore_Test1
14 {
15 
16     public class Startup
17     {
18         public Startup(IHostingEnvironment env)
19         {
20             var builder = new ConfigurationBuilder()
21                 .SetBasePath(env.ContentRootPath)
22                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
23                 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
24 
25             if (env.IsEnvironment("Development"))
26             {
27                 // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
28                 builder.AddApplicationInsightsSettings(developerMode: true);
29             }
30             builder.AddEnvironmentVariables();
31             COnfiguration= builder.Build();
32         }
33 
34         public IConfigurationRoot Configuration { get; }
35 
36         // This method gets called by the runtime. Use this method to add services to the container
37         public void ConfigureServices(IServiceCollection services)
38         {
39             // Add framework services.
40             services.AddApplicationInsightsTelemetry(Configuration);
41 
42             services.AddMvc();
43 
44             //services.AddLogging();
45 
46             // 注入的实现ISwaggerProvider使用默认设置
47             services.AddSwaggerGen();
48 
49             services.ConfigureSwaggerGen(optiOns=>
50             {
51                 options.SingleApiVersion(new Info
52                 {
53                     Version = "v1",
54                     Title = "测试ASP.NET Core WebAPI生成文档(文档说明)",
55                     Description = "A simple example ASP.NET Core Web API",
56                     TermsOfService = "None",
57                     COntact= new Contact { Name = "linyongjie", Email = "", Url = "https://docs.microsoft.com/zh-cn/aspnet/core/" },
58                     License = new License { Name = "Swagger官网", Url = "http://swagger.io/" }
59                 });
60 
61                 var basePath = Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationBasePath; // 获取到应用程序的根路径
62                 options.IncludeXmlComments(basePath + "\\dotNetCore_Test1.xml");  //是需要设置 XML 注释文件的完整路径
63             });
64 
65             
66         }
67 
68         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline
69         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
70         {
71             loggerFactory.AddConsole(Configuration.GetSection("Logging"));
72             loggerFactory.AddDebug();
73 
74             app.UseApplicationInsightsRequestTelemetry();
75 
76             app.UseApplicationInsightsExceptionTelemetry();
77 
78             app.UseMvc();
79 
80 
81             app.UseSwagger(); //使中间件服务生成Swagger作为JSON端点
82 
83             app.UseSwaggerUi();  //使中间件服务swagger-ui assets (HTML、Javascript、CSS等等)
84 
85         }
86     }
87 }
技术分享

11、新建一个User(用户)Model用于测试:

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel.DataAnnotations;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6 
 7 namespace dotNetCore_Test1.Models
 8 {
 9     
10     /// 
11     /// 用户模型
12     /// 
13     public class User
14     {
15         
16 
17         /// 
18         /// 年龄
19         /// 
20         public int Age { set; get; }
21 
22         /// 
23         /// 名称
24         /// 
25         [Required]  //此配置可以约束(Swagger )传进来的参数值 不能为空
26         public string Name { get; set; }
27 
28 
29         /// 
30         /// 性别
31         /// 
32         public string Sex { get; set; }
33     }
34 }
技术分享

12、添加了XML注释控制器例子:

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Mvc;
 6 
 7 namespace dotNetCore_Test1.Controllers
 8 {
 9     /// 
10     /// 测试 Swagger的 XML 注释
11     /// 
12     [Route("api/[controller]")]
13     public class ValuesController : Controller
14     {
15         /// 
16         /// 获得一个数组信息
17         /// 
18         /// 
19         [HttpGet]
20         public IEnumerable Get()
21         {
22             return new string[] { "value1", "value2" };
23         }
24 
25         /// 
26         /// 根据id获取信息
27         /// 
28         /// 主键唯一标识
29         /// 返回一个值
30         [HttpGet("{id}")]
31         public string Get(int id)
32         {
33             return "value";
34         }
35 
36         /// 
37         /// 添加一个用户
38         /// 
39         /// 
40         ///  
41         ///     POST /User
42         ///     {
43         ///        "Age": "年龄",
44         ///        "Name": "名称",
45         ///        "Sex": "性别
46         ///     }
47         /// 
48         /// 
49         /// 用户的json对象
50         /// 返回一个对象
51         /// 返回新创建的项目
52         /// 如果item是null
53         [HttpPost]
54         [ProducesResponseType(typeof(dotNetCore_Test1.Models.User), 201)]
55         [ProducesResponseType(typeof(dotNetCore_Test1.Models.User), 400)]
56         [HttpPost]
57         public IActionResult Post([FromBody]dotNetCore_Test1.Models.User item)
58         {
59             if (item == null)
60             {
61                 return BadRequest();
62             }
63             return Ok(item);
64         }
65 
66 
67 
68         
69         /// 
70         /// 删除一个对象
71         /// 
72         /// 
73         /// 这里可以写详细的备注
74         /// 
75         /// 主键id标识
76         [HttpDelete("{id}")]
77         public void Delete(int id)
78         {
79         }
80     }
81 }
技术分享

13、通过访问 http://localhost:/swagger/ui 查看Swagger 自动生成文档 (<random_port> 表示IIS Express随机分配的端口号,我测试的demo分配的端口号是:51109,所以我这里查看Swagger生成的文档地址是http://localhost:51109/swagger/ui/index.html#/Values)生成的文档如下图:

13.1、

技术分享

13.2

技术分享

13.3

技术分享

13.4

技术分享

配置 Swagger 使用生成的 XML 文件

使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
author-avatar
平淡人生路20111212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有