什么是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. .NET MAUI RC2 发布,支持 Tizen 平台

    在.NET多平台应用程序UI(.NET MAUI)RC1之后仅两周,微软已经发布了RC2,并以新的Tizen支持为亮点..NET MAUI是微软对Xamarin.Forms的演变,因为它除了iOS和A ...

  2. ASP.NET视图视图表单验证

    视图表单验证 初始化项目 新建一个ASP.NET MVC的项目 新建游戏用户类: public class StemUsers { public int id { get; set; } public ...

  3. 最新 x86_64 系统调用入口分析 (基于 5.7.0)

    最新 x86_64 系统调用入口分析 (基于5.7.0) 整体概览 最近的工作涉及系统调用入口,但网上的一些分析都比较老了,这里把自己的分析过程记录一下,仅供参考. x86_64位系统调用使用 SYS ...

  4. python使用虚拟环境venv

    venv模块支持使用自己的站点目录创建轻量级"虚拟环境",可选择与系统站点目录隔离.每个虚拟环境都有自己的Python二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可 ...

  5. 探究MySQL中SQL查询的成本

    成本 什么是成本,即SQL进行查询的花费的时间成本,包含IO成本和CPU成本. IO成本:即将数据页从硬盘中读取到内存中的读取时间成本.通常1页就是1.0的成本. CPU成本:即是读取和检测是否满足条 ...

  6. Vben Admin 源码学习:项目初始化

    0x00 前言 Vue-Vben-Admin 是一个免费开源的中后台模版.使用了最新的vue3,vite2,TypeScript等主流技术开发,开箱即用的中后台前端解决方案考. 本系列本着学习参考的目 ...

  7. QC快速充电

    QC快充 一.高通QC快充的介绍 二.识别充电类型的芯片介绍 三.QC充电曲线 四.如何在log中看QC充电类型 五.QC3识别错误 六.波形图 一.高通QC快充的介绍 高通QC快充技术,又称Quic ...

  8. Dubbo的基本使用

    Dubbo分为提供者和消费方  并且两者都要注册到ZK上 提供者 注解    @Service   这是dubbo包下的 消费组 注解    @Reference 远程注入 第一步导入依赖 <! ...

  9. java类的学习

    什么是类: 类=属性+方法 属性来源于状态(以变量的形式存在):方法来源于动作: *属性对应的是数据,而数据只能存在变量中. 方法内的变量为局部变量:类体中的变量称为成员变量(也称为属性) java中 ...

  10. JS:||运算符

    ||逻辑运算符 ||这个符号在开发中 往往是优化的代码最常用的js符号: 当用||连接语句时,回将前后语句变为Boolean类型,再进行运算: 1.当||前面条件为false,不管后面是true/fa ...