热门标签 | 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 自动生成文档)


推荐阅读
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了钩子(hook)的概念、原理及其在编程中的实际应用。通过对比回调函数和注册函数,解释了钩子的工作机制,并提供了具体的Python示例代码,帮助读者更好地理解和掌握这一重要编程工具。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
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社区 版权所有