什么是Swagger?

如下引用swagger官方的解释

Swagger is a powerful yet easy-to-use suite of API developer tools for teams and individuals, enabling development across the entire API lifecycle, from design and documentation, to test and deployment.

Swagger consists of a mix of open source, free and commercially available tools that allow anyone, from technical engineers to street smart product managers to build amazing APIs that everyone loves.

Swagger is built by SmartBear Software, the leader in software quality tools for teams. SmartBear is behind some of the biggest names in the software space, including Swagger, SoapUI and QAComplete.

翻译过来就是

Swagger 是一套功能强大且易于使用的 API 开发人员工具组件,适用于团队和个人,支持从设计文档到测试部署的整个 API 生命周期的开发。

Swagger 由多种开源、免费和商业可用的工具组成,允许任何人(从技术工程师到智能产品经理)构建每个人都喜欢且令人惊叹的 API。

Swagger 由 SmartBear Software 构建,SmartBear Software 是团队软件质量工具的领导者。SmartBear 支持软件领域的一些大腕,包括 Swagger、SoapUI 和 QAComplete。

当然,这些了解一下就好了,对我们来说并没有什么用,只需要知道他是一个简便的接口调试方式即可,接下来我们使用一下swagger。

在NET Core API中使用swagger

1. 创建net core api项目

这里使用ASP.NET Core 3.1创建WebAPI接口项目,命名为 swaggerDemo,创建如下

创建完成后的项目结构

2. 引入swagger 中间件

在nuget里面引入swagger中间件,名称为 Swashbuckle.AspNetCore

3.  配置swagger中间件

在 Startup.cs文件的ConfigureServices 方法中添加如下代码,注意下面的 AddSwaggerGen 方法是用于给 API 文档 添加一些元数据。

PS:注意,这里提前说一下,如果没有写xml文件解析,那么最后的文档是没有方法的注释和方法参数的注释,注意参考下面的第5点。

public void ConfigureServices(IServiceCollection services)
{
// 添加Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "我是当前API的名称", //swagger接口文档:名称
Version = "v1", //swagger接口文档:版本号
Description = "测试Swagger的使用方法" //swagger接口文档:描述
}); //显示每个方法的注释和方法参数的注释
// 获取xml文件名
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
// 获取xml文件路径
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
// 添加控制器层注释,true表示显示控制器注释
c.IncludeXmlComments(xmlPath, true);
}); services.AddControllers();
}

添加好中间件后,在 Startup.cs文件的Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务,如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} // begin 添加Swagger有关中间件
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Demo v1");
});
// end 添加Swagger有关中间件 app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}

4. 创建一个api接口控制器

创建一个Home接口的控制器,在Home控制器里面写入几个方法用于测试,如下完整显示,大家测试的时候用一个就可以了。

注意:这里route路由可以配置,也可以使用默认的。

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks; namespace swaggerDemo.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class HomeController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
/// <summary>
/// 不带任何参数的Get操作方法
/// </summary>
/// <remarks>
/// 我是不带任何参数的Get操作方法
/// </remarks>
/// <returns></returns>
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
/// <summary>
/// 带参数的get操作方法
/// </summary>
/// <remarks>
/// 我是一个带参数的get操作方法
/// </remarks>
/// <param name="str">这是输入的字段</param>
/// <returns></returns>
[HttpGet("{str}")]
public ActionResult<string> Get(string str)
{
return str;
}
/// <summary>
/// 添加数据的操作方法
/// </summary>
/// <remarks>
/// 我是添加功能
/// </remarks>
/// <param name="value">这是输入的字段</param>
[HttpPost]
public void Post([FromBody] string value)
{
}
/// <summary>
/// (提交文件)修改数据的操作方法
/// </summary>
/// <remarks>
/// 我是修改功能
/// </remarks>
/// <param name="file">文件名称</param>
/// <param name="id">主键</param>
[HttpPut("{id}")]
public void Put(IFormFile file, int id)
{ }
/// <summary>
/// 删除数据的操作方法
/// </summary>
/// <remarks>
/// 我是删除功能
/// </remarks>
/// <param name="id">主键</param>
[HttpDelete("{id}")]
public void Delete(int id)
{ }
}
}

5. 设置显示注释

到这里我们的Swagger api文档是没有注释的,我们添加一下显示注释的操作。

点击 swaggerDemo 右键-》属性,点击 生成,把xml文档文件勾选,勾选后会自动填充数据,里面的数据暂时不要动,如下。

然后在Startup.cs文件ConfigureServices方法的中间件services.AddSwaggerGen下面添加如下语句,上面如果添加过了的可以忽略。

//显示每个方法的注释和方法参数的注释
// 获取xml文件名
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
// 获取xml文件路径
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
// 添加控制器层注释,true表示显示控制器注释
c.IncludeXmlComments(xmlPath, true);

6. swagger展示

到这里我们就完成配置了,接下来我们运行项目看一下效果。

这里访问的话是我默认的地址:https://localhost:44383/weatherforecast,我们需要把后面的weatherforecast更换为swagger/index.html,如下

访问地址:http://localhost:54848/swagger/index.html

很显然我们swagger搭建成功了,接下来我们访问看看效果怎么样。

7. swagger如何调试接口

我们可以看到我们的所有接口,然后找到需要调试的接口调试就可以了,我们调试一下带参数的。

1、点击需要调试的接口地址;

2、点击Try it out,这时会变成Cancel,点击Cancel会回到Try it out(Cancel状态是可以读写状态,Try it out是只读状态);

3、在输入框输入内容后,点击Execute进行接口请求。

4、点击请求后,Server response位置就是接口返回的的数据了。

这样我们就完成了swagger的简单操作啦。

总结

对于swagger的应用远远不止于此,但是常规的操作已经够我们日常开发中使用了,具体问题具体分析,需要拓展时在进行添加即可。

其实不管是使用Fiddler、PostMan、JMeter、SoupUI等 还是swagger,我们不用盲目跟风,选择自己用起来最熟练的使用即可。

工具嘛,选择一个自己能熟练使用就挺好了,当然,能了解更多也没坏处。

喜欢就点赞加关注。

欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐
公众号:熊泽有话说

QQ群:711838388
出处:https://www.cnblogs.com/xiongze520/p/16478329.html
您可以随意转载、摘录,但请在文章内注明作者和原文链接。 

10分钟带你进入Swagger的世界,快来看一看吧的更多相关文章

  1. Azure IoT Hub 十分钟入门系列 (1)- 10分钟带你了解Azure IoT Hub 并创建IoT Hub

    建议您先对<Azure 上 IoT 整体解决方案概览 >进行了解. 本文主要分享一个案例: 10分钟-了解Azure IoT Hub并创建Azure IoT Hub 本文主要有如下内容: ...

  2. 10分钟带你入门git到github

    git的产生背景 开局先来一个故事吧,故事看完如果不想看枯燥无味的指令,没关系我已经把这篇文章的内容录制成了一个视频,点击文末阅读原文就可以观看.或者说你已经熟练掌握git的使用了,可以直接跳到总结部 ...

  3. 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手

    Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎.它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支 ...

  4. 干货 | 10分钟带你彻底了解column generation(列生成)算法的原理附java代码

    OUTLINE 前言 预备知识预警 什么是column generation 相关概念科普 Cutting Stock Problem CG求解Cutting Stock Problem 列生成代码 ...

  5. 干货 | 10分钟带你全面掌握branch and bound(分支定界)算法-概念篇

    00 前言 之前一直做启发式算法,最近突然对精确算法感兴趣了.但是这玩意儿说实话是真的难,刚好boss又叫我学学column generation求解VRP相关的内容.一看里面有好多知识需要重新把握, ...

  6. 干货 | 10分钟带你掌握branch and price(分支定价)算法超详细原理解析

    00 前言 相信大家对branch and price的神秘之处也非常好奇了.今天我们一起来揭秘该算法原理过程.不过,在此之前,请大家确保自己的branch and bound和column gene ...

  7. DTSE Tech Talk | 第10期:云会议带你入门音视频世界

    摘要:本期直播主题是<云会议带你入门音视频世界>,华为云媒体服务产品部资深专家金云飞,与开发者们交流华为云会议在实时音视频行业中的集成应用,帮助开发者更好的理解华为云会议及其开放能力. 本 ...

  8. Apache Shiro系列三,概述 —— 10分钟入门

     一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...

  9. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

随机推荐

  1. Django模板相关

    1.母版 想象一个举着火炬的手,除了火炬这个手还能举棒球棍.举雷神之锤.举拖拉机钥匙等等,举得东西不同给人整体感觉就不同. 母版就相当于这个手(实际为一个html文件),其他相关的html文件就相当于 ...

  2. MySQL性能优化 - 别再只会说加索引了

    MySQL性能优化 MySQL性能优化我们可以从以下四个维度考虑:硬件升级.系统配置.表结构设计.SQL语句和索引. 从成本上来说:硬件升级>系统配置>表结构设计>SQL语句及索引, ...

  3. 4 个超实用的 Linux 监控工具

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 下面是 Linux 下 4 个日常使用率非常高的监控工具,可以帮助我们准确快速的诊断系统问题. 1. iotop 如果你想知 ...

  4. 动手实操丨RC522射频卡模块与IC卡完成充值消费查询的技术实现思路

    摘要:一文手把手教你利用RC522射频卡模块与IC卡完成充值消费查询的技术实现思路. 本文分享自华为云社区<​​​​​​​​​​​​​​RC522射频卡模块与IC卡完成充值消费查询的技术实现思路 ...

  5. 关于div及display

    1.DIV div被看作是一个盒子,可以设置width.height.这个盒子其实是由三部分构成width(height).padding.border.在默认情况下,所见到的div是border和p ...

  6. Java 统计新客户

    上周做了一个订单数据统计的任务,统计的是订单的新客户数量,本文做一个解题过程的记录和整理. 新客户的定义 新客户指的是选取时间段有订单,时间段之前没有订单. 比如下面的订单数据: 时间段 2月1日之前 ...

  7. Redis数据类型:五大基本数据类型及三种特殊类型

    String (字符串类型) String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value. String类型是二进制安全的,意思是redis的st ...

  8. Git分离头指针

    Git头指针 Git中有HEAD头指针的概念.HEAD头指针通常指向某个分支的最近一次提交,但我们也可以改变它的指向,使其指向某个commit,此时处于分离头指针的状态. 如下,改变HEAD的指向,g ...

  9. 企业应用架构研究系列二十六:信号量SemaphoreSlim与Semaphore

    在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个" ...

  10. linux-ext4格式文件误删除,该如何恢复?

    在开始进行实验之前,我已经新建了一个空目录/data,并将该目录挂载了一块新硬盘,将硬盘分区格式化为ext4的格式,所以当我操作/data目录下的文件及文件夹的时候,实际上就是针对新挂载的硬盘进行数据 ...