最近在用 .Net Core 做项目

了解到swagger 是一个不错的工具

简单介绍一下

在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者的心情。或者详细点,或者简单点。那么有没有一种快速有效的方法来构建api说明文档呢?答案是肯定的, Swagger就是最受欢迎的REST APIs文档生成工具之一!

为什么使用Swagger作为REST APIs文档生成工具

  1. Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。

  2. Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。

  3. Swagger 文件可以在许多不同的平台上从代码注释中自动生成。

  4. Swagger 有一个强大的社区,里面有许多强悍的贡献者。

asp.net core中如何使用Swagger生成api说明文档呢

  1. Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.NET Core Web API 的 Swagger 文档。

  2. NSwag 是另一个用于将 Swagger UI 或 ReDoc 集成到 ASP.NET Core Web API 中的开源项目。 它提供了为 API 生成 C# 和 TypeScript 客户端代码的方法。

下面以Swashbuckle.AspNetCore为例为大家进行展示

Swashbuckle由哪些组成部分呢?

  • Swashbuckle.AspNetCore.Swagger:将 SwaggerDocument 对象公开为 JSON 终结点的 Swagger 对象模型和中间件。

  • Swashbuckle.AspNetCore.SwaggerGen:从路由、控制器和模型直接生成 SwaggerDocument 对象的 Swagger 生成器。 它通常与 Swagger 终结点中间件结合,以自动公开 Swagger JSON。

  • Swashbuckle.AspNetCore.SwaggerUI:Swagger UI 工具的嵌入式版本。 它解释 Swagger JSON 以构建描述 Web API 功能的可自定义的丰富体验。 它包括针对公共方法的内置测试工具。

如何使用vs2017安装Swashbuckle呢?

  • 从“程序包管理器控制台”窗口进行安装

  • 转到“视图” > “其他窗口” > “程序包管理器控制台”

  • 导航到包含 TodoApi.csproj 文件的目录

  • 请执行以下命令 ·Install-Package Swashbuckle.AspNetCore

  • 从“管理 NuGet 程序包”对话框中:

  • 右键单击“解决方案资源管理器” > “管理 NuGet 包”中的项目

  • 将“包源”设置为“nuget.org”

  • 在搜索框中输入“Swashbuckle.AspNetCore”

  • 从“浏览”选项卡中选择“Swashbuckle.AspNetCore”包,然后单击“安装”

添加并配置 Swagger 中间件

首先引入命名空间:

using Swashbuckle.AspNetCore.Swagger;

将 Swagger 生成器添加到 Startup.ConfigureServices 方法中的服务集合中:

  1.  
    //注册Swagger生成器,定义一个和多个Swagger 文档services.AddSwaggerGen(c =>
  2.  
    {     c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
  3.  
    });

在 Startup.Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务:

  1.  
    //启用中间件服务生成Swagger作为JSON终结点app.UseSwagger();//启用中间件服务对swagger-ui,指定Swagger JSON终结点app.UseSwaggerUI(c =>
  2.  
    {    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
  3.  
    });

启动应用,并导航到 http://localhost:<port>/swagger/v1/swagger.json。 生成的描述终结点的文档显示如下json格式。

可在 http://localhost:<port>/swagger 找到 Swagger UI。 通过 Swagger UI 浏览 API文档,如下所示。

要在应用的根 (http://localhost:<port>/) 处提供 Swagger UI,请将 RoutePrefix 属性设置为空字符串:

  1.  
    app.UseSwaggerUI(c =>
  2.  
    {    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");    c.RoutePrefix = string.Empty;
  3.  
    });

Swagger的高级用法(自定义以及扩展)

使用Swagger为API文档增加说明信息

在 AddSwaggerGen 方法的进行如下的配置操作会添加诸如作者、许可证和说明信息等:

  1.  
    //注册Swagger生成器,定义一个和多个Swagger 文档services.AddSwaggerGen(c =>
  2.  
    {
  3.  
       c.SwaggerDoc("v1", new Info
  4.  
       {
  5.  
           Version = "v1",
  6.  
           Title = "yilezhu's API",
  7.  
           Description = "A simple example ASP.NET Core Web API",
  8.  
           TermsOfService = "None",
  9.  
           Contact = new Contact
  10.  
           {
  11.  
               Name = "依乐祝",
  12.  
               Email = string.Empty,
  13.  
               Url = "http://www.cnblogs.com/yilezhu/"
  14.  
           },
  15.  
           License = new License
  16.  
           {
  17.  
               Name = "许可证名字",
  18.  
               Url = "http://www.cnblogs.com/yilezhu/"
  19.  
           }
  20.  
       });
  21.  
    });

wagger UI 显示版本的信息如下图所示:

为了防止博客被转载后,不保留本文的链接,特意在此加入本文的链接:https://www.cnblogs.com/yilezhu/p/9241261.html

为接口方法添加注释

大家先点击下api,展开如下图所示,可以没有注释啊,怎么来添加注释呢?

按照下图所示用三个/添加文档注释,如下所示

  1.  
    /// <summary>
    /// 这是一个api方法的注释
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
  2.  
    {  
      return new string[] { "value1", "value2" };
  3.  
    }

然后运行项目,回到swaggerUI中去查看注释是否出现了呢

还是没有出现,别急,往下看!

启用XML 注释

可使用以下方法启用 XML 注释:

  • 右键单击“解决方案资源管理器”中的项目,然后选择“属性”

  • 查看“生成”选项卡的“输出”部分下的“XML 文档文件”框

启用 XML 注释后会为未记录的公共类型和成员提供调试信息。如果出现很多警告信息  例如,以下消息指示违反警告代码 1591:

warning CS1591: Missing XML comment for publicly visible type or member 'TodoController.GetAll()'

如果你有强迫症,想取消警告怎么办呢?可以按照下图所示进行取消

注意上面生成的xml文档文件的路径,

注意:

1.对于 Linux 或非 Windows 操作系统,文件名和路径区分大小写。 例如,“SwaggerDemo.xml”文件在 Windows 上有效,但在 CentOS 上无效。

2.获取应用程序路径,建议采用Path.GetDirectoryName(typeof(Program).Assembly.Location)这种方式或者·AppContext.BaseDirectory这样来获取

  1.  
    //注册Swagger生成器,定义一个和多个Swagger 文档
  2.  
               services.AddSwaggerGen(c =>
  3.  
               {
  4.  
                   c.SwaggerDoc("v1", new Info
  5.  
                   {
  6.  
                       Version = "v1",
  7.  
                       Title = "yilezhu's API",
  8.  
                       Description = "A simple example ASP.NET Core Web API",
  9.  
                       TermsOfService = "None",
  10.  
                       Contact = new Contact
  11.  
                       {
  12.  
                           Name = "依乐祝",
  13.  
                           Email = string.Empty,
  14.  
                           Url = "http://www.cnblogs.com/yilezhu/"
  15.  
                       },
  16.  
                       License = new License
  17.  
                       {
  18.  
                           Name = "许可证名字",
  19.  
                           Url = "http://www.cnblogs.com/yilezhu/"
  20.  
                       }
  21.  
                   });                // 为 Swagger JSON and UI设置xml文档注释路径
  22.  
                   var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
  23.  
                   var xmlPath = Path.Combine(basePath, "SwaggerDemo.xml");
  24.  
                   c.IncludeXmlComments(xmlPath);
  25.  
               });

重新生成并运行项目查看一下注释出现了没有

通过上面的操作可以总结出,Swagger UI 显示上述注释代码的 <summary> 元素的内部文本作为api大的注释!

当然你还可以将 remarks 元素添加到 Get 操作方法文档。 它可以补充 <summary> 元素中指定的信息,并提供更可靠的 Swagger UI。 <remarks> 元素内容可包含文本、JSON 或 XML。 代码如下:

  1.  
    /// <summary>
  2.  
    /// 这是一个带参数的get请求
  3.  
    /// </summary>
  4.  
    /// <remarks>
  5.  
    /// 例子:
  6.  
    /// Get api/Values/1
  7.  
    /// </remarks>
  8.  
    /// <param name="id">主键</param>
  9.  
    /// <returns>测试字符串</returns>          
  10.  
    [HttpGet("{id}")] public ActionResult<string> Get(int id) {       return $"你请求的 id 是 {id}";
  11.  
    }

重新生成下项目,当好到SwaggerUI看到如下所示:

描述响应类型

摘录自:https://www.cnblogs.com/yanbigfeg/p/9232844.html

接口使用者最关心的就是接口的返回内容和响应类型啦。下面展示一下201和400状态码的一个简单例子:

我们需要在我们的方法上添加:[ProducesResponseType(201)][ProducesResponseType(400)]

然后添加相应的状态说明:

最终代码应该是这个样子:

  1.  
    /// <summary>
  2.  
    /// 这是一个带参数的get请求
  3.  
    /// </summary>
  4.  
    /// <remarks>
  5.  
    /// 例子:
  6.  
    /// Get api/Values/1
  7.  
    /// </remarks>
  8.  
    /// <param name="id">主键</param>
  9.  
    /// <returns>测试字符串</returns>
  10.  
    /// <response code="201">返回value字符串</response>/// <response code="400">如果id为空</response>  
  11.  
    // GET api/values/2
    [HttpGet("{id}")]
  12.  
    [ProducesResponseType(201)]
  13.  
    [ProducesResponseType(400)]
    public ActionResult<string> Get(int id){  
       return $"你请求的 id 是 {id}";
  14.  
    }

效果如下所示

使用SwaggerUI测试api接口

下面我们通过一个小例子通过SwaggerUI调试下接口吧

  1. 点击一个需要测试的API接口,然后点击Parameters左右边的“Try it out ” 按钮

  2. 在出现的参数文本框中输入参数,如下图所示的,输入参数2

  3. 点击执行按钮,会出现下面所示的格式化后的Response,如下图所示

好了,今天的在ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了的教程就到这里了。希望能够对大家学习在ASP.NET Core中使用Swagger生成api文档有所帮助

转自 https://www.cnblogs.com/yilezhu/p/9241261.html

swagger 的使用的更多相关文章

  1. ABP框架 - Swagger UI 集成

    文档目录 本节内容: 简介 Asp.net Core 安装 安装Nuget包 配置 测试 Asp.net 5.x 安装 安装Nuget包 配置 测试 简介 来自它的网页:“...使用一个Swagger ...

  2. ABP项目中使用Swagger生成动态WebAPI

    本文是根据角落的白板报的<使用ABP实现SwaggerUI,生成动态webapi>一文的学习总结,感谢原文作者角落的白板报. 1 安装Swashbuckle.core 1.1 选择WebA ...

  3. 用Swagger生成接口文档

    Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接 ...

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

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

  5. 使用swagger作为restful api的doc文档生成

    初衷 记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情.也许多点,也许少点.甚至,接口总是需要适应新需求的,修改了,增加了,这份 ...

  6. ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档

    原文:ASP.NET Web API Help Pages using Swagger 作者:Shayne Boyer 翻译:谢炀(kiler) 翻译:许登洋(Seay) 对于开发人员来说,构建一个消 ...

  7. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  8. ASP.NET WebApi 文档Swagger深度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws   写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...

  9. ASP.NET WebApi 文档Swagger中度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws   写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...

  10. NSwagStudio for Swagger Api

    本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码.快速的访问Web Api. NSwagStudio 下载地址 比较强大.可以生成TypeScript.WebApi Cont ...

随机推荐

  1. 数据分析 - Excel 综合实例 - 杜邦分析法

    项目背景 杜邦分析法 利用 杜邦分析法完成对一份数据的动态分析 流程图如下 项目源数据 左侧为竖向的数据管理, 右侧为横向的数据管理 横向的数据管理在数据透视的时候会很不方便, 并不推荐 常用叫法左边 ...

  2. Python描述性统计numpy

    import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn import datasets, ...

  3. iOS-MBProgressHUD框架使用(转)

    MBProgressHUD是一个开源类库,实现了各种样式的提示框, 下载地址:https://github.com/jdg/MBProgressHUD,然后把两个MBProgressHUD.h和MBP ...

  4. Flutter 轻量级的ToolTip控件

    轻提示的效果在应用中是少不了的,其实Flutter已经准备好了轻提示控件,这就是toolTip. 轻量级操作提示 其实Flutter中有很多提示控件,比如Dialog.Snackbar和BottomS ...

  5. jmeter5实现文件上传接口测试

    背景:在公司做接口自动化编写过程中,遇到需要测试一个在线下载导入模板的接口,之前都没有接触过关于文件上传下载的接口测试,此处做个记录,为后续工作开展做个参考. 步骤: 打开浏览器按F12 手动进行文件 ...

  6. 蓝牙AT模式

      一.蓝牙AT模式设置方式 在通电前按住蓝牙模块黑色按钮,接电,当蓝牙指示灯按每隔两秒闪烁一次时进入AT模式: 有3种设置方式: 1.默认设置 模块工作角色:从模式    串口参数:38400bit ...

  7. c++学习笔记_1

    前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用 第一章 从c到c++ 引用 定义引用时一定要将其初始化成某个变量 引用从一而终,引 ...

  8. 一文带你了解babel-preset-env

    参考链接:https://www.jianshu.com/p/000c2670672b

  9. Reactor系列(五)map映射

    #java# #reactor# #flux# #map# #映射# 视频解视: https://www.bilibili.com/video/av79179444/ FluxMonoTestCase ...

  10. 1-2-K Game

    题目链接:https://vjudge.net/contest/330119#problem/E 题目大意可以理解为: 1.给出n个物品以及k,Alice与Bob轮流拿1个,或2个,或k个物品,Ali ...