.Net Core 3.1浏览器后端服务(三) Swagger引入与应用
一、前言
前后端分离的软件开发方式已逐步成为互联网项目开发的业界标准,前后端分离带来了诸多好处的同时,也带来了一些弊端。
接口文档的维护就是其中之一,起初前后端约定文档规范,开发的很愉快,随着时间推移、版本迭代、接口更改,接口文档维护越来越麻烦。
相信很多前端开发者(请求方)都遇到过实际请求与接口文档不一致的问题


什么是Swagger?
Swagger是一个强大的接口文档自动生成工具。
二、引入Swagger包
在Package Manager Console输入如下命令
Install-Package Swashbuckle.AspNetCore -Version 6.0.7

或者在MWebAPI项目右键


选择最新版本Install,安装完成后添加Swagger服务注入及中间件配置
在Startup类的ConfigureServices方法中添加服务注入:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo {Title = "Net Core API", Version = "v1"});
});
在Startup类的Configure方法中配置Swagger相关中间件:
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Net Core API");
});
F5运行项目

咦,Swagger文档并未展示,这是由于默认启动url未更改
修改launchSetting.json文件中launchUrl如下:

再次F5运行

预想的SwaggerUI展示出来了
三、添加注释
1、首先添加文档说明及作者信息
修改Swagger服务注入部分
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "Net Core API",
Version = "v1",
Description = "A simple DotNet core web API sample program",
Contact = new OpenApiContact
{
Name = "Sirius",
Email = "1247830052@qq.com",
Url = new Uri("https://www.cnblogs.com/mchao/"),
Extensions = null,
},
License = new OpenApiLicense
{
Name = "免费许可",
Url = new Uri("https://www.cnblogs.com/mchao/"),
Extensions = null,
}
});
});
运行如下:

2、添加生成Controller的注释说明
MWebAPI项目右键->properties->build->output

build项目会生成Controller.xml文件及内容(自动创建更新,无需手动维护)

接着在AddSwaggerGen方法中添加文档路径
services.AddSwaggerGen(c =>
{var xmlPath = Path.Combine(AppContext.BaseDirectory, "Controller.xml");
c.IncludeXmlComments(xmlPath, true);
});
运行如下:

3、添加返回数据的注释说明
MDto项目右键->properties->build->output

接着在AddSwaggerGen方法中添加文档路径
services.AddSwaggerGen(c =>
{
var xmlDtoPath = Path.Combine(AppContext.BaseDirectory, "Dto.xml");
c.IncludeXmlComments(xmlDtoPath, true);
});
运行

这里有个异常,找不到Dto.xml,目前是这样处理的,Dto.xml文件属性 Copy to Outup Direcotry,如哪位道友有其他方案请告知。。。

再次运行

可看到Dto的注释信息
四、Api分组
1、增加分组
在Startup类的ConfigureServices方法中增加doc分组:
c.SwaggerDoc("V2", new OpenApiInfo
{
Title = "Net Core API V2",
Version = "V2",
Description = "A simple DotNet core web API sample program2",
});
在Startup类的Configure方法中增加v2 json路径
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/V1/swagger.json", "API V1");
c.SwaggerEndpoint("/swagger/V2/swagger.json", "API V2");
});
2、配置分组
给UserInfoController配置V1组
[ApiExplorerSettings(GroupName = "V1")]
public class UserInfoController : Controller
给HomeController配置V2组
[ApiExplorerSettings(GroupName = "V2")]
public class HomeController : Controller
运行:

五、结语
Swagger还有很多好用功能,比如自定义Swagger模板、Swagger开启权限验证等,希望感兴趣的道友继续探索!!!
.Net Core 3.1浏览器后端服务(三) Swagger引入与应用的更多相关文章
- .Net Core 3.1浏览器后端服务(一) Web API项目搭建
一.前言 基于CefSharp开发的浏览器项目已有一段时间,考虑到后期数据维护需要Server端来管理,故开启新篇章搭建浏览器后端服务.该项目前期以梳理服务端知识为主,后期将配合CefSharp浏览器 ...
- .Net Core 3.1浏览器后端服务(五) 引入定时任务Quartz.Net
一.前言 近期项目中遇到一些需求,需要定时写入数据库,定时刷新缓存的问题,因此需要引入任务调度机制. 我的选择是使用 Quartz.Net,使用的版本是 3.2.4 这里强调一点:3.x的版本与2.x ...
- .Net Core 3.1浏览器后端服务(四) 你眼中的依赖注入与我相同吗?
一.前言 DI-Dependency Injection 依赖注入 IoC-Inversion of Control 控制反转 近几年这依赖注入. 控制反转已成为软件开发中不可或缺的一部分,那么该怎么 ...
- Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置
服务端配置 Silo通过SiloHostBuilder和许多补充选项类以编程方式进行配置. Silo配置有几个关键方面: Orleans集群信息 集群提供程序(不知道咋翻译) Silo到Silo和Cl ...
- uni-app + Cloudbase——uni-app 项目中如何使用腾讯云开发后端服务
1 基本介绍 uni-app 是一个基于 Vue.js 的跨端开发框架,一套代码可以发布到 App.小程序.Web 等不同平台 腾讯云开发平台 Cloudbase 提供的 @cloudbase/js- ...
- 容易被忽视的后端服务 chunked 性能问题
容易被忽视的后端服务 chunked 性能问题 标签(空格分隔): springboot springmvc chunked 背景 spring boot 创建的默认 spring mvc 项目 集成 ...
- 快速新建简单的koa2后端服务
既然前端工程化是基于NodeJS,那么选择NodeJs做前后端分离部署也是理所应当的.其实只需要实现静态资源和代理的话,用nginx才是最好的选择,用NodeJS是为了日后能进一步在服务端上实现自动构 ...
- vue,vuex的后台管理项目架子structure-admin,后端服务nodejs
之前写过一篇vue初始化项目,构建vuex的后台管理项目架子,这个structure-admin-web所拥有的功能 接下来,针对structure-admin-web的不足,进行了补充,开发了具有登 ...
- 浏览器与服务端请求响应流程与HTTP协议
浏览器与服务端请求响应流程图: 1.HTTP概要 1.1. 定义 HTTP(HyperText Transfer Protocol,超文本传输协议)最早就是计算机与计算机之间沟通的一种标准协议,这种 ...
随机推荐
- Jmeter的客户端实现与Keep-Alive
Jmeter的客户端实现与Keep-Alive 目录 Jmeter的客户端实现与Keep-Alive 0. 结论 1.缘起 1.1 起因 1.2 初步尝试 1.3 Jmeter客户端实现 1.4 Ja ...
- 六:SpringBoot-引入JdbcTemplate,和多数据源配置
SpringBoot-引入JdbcTemplate,和多数据源配置 1.JdbcTemplate对象 1.1 JdbcTemplate核心方法 2.SpringBoot中使用JDBCTemplate ...
- Nginx基本功能及其原理,配置原理
Nginx基本功能及其原理,配置原理 一.正向代理.反向代理 二.Nginx配置文件的整体结构 三.Nginx配置SSL及HTTP跳转到HTTPS 四.nginx 配置管理 [nginx.conf 基 ...
- PL/SQL 学习分享(续)
事务 事务的概述 事务的特性 回滚点 事务实例练习 动态SQL 动态SQL概述 动态SQL应用场合 动态SQL的执行语法 绑定变量 动态SQL创建表 动态SQL绑定变量 动态SQL综合案例添加数据 使 ...
- Spring框架——JDBC方式搭建项目
学习Spring框架,使用JDBC的方式配置方式搭建一个项目,进行项目总结. 首先,采用MVC设计模式思想,搭建项目目录. 然后各个目录文件下面的相关源码附上: controller目录: impor ...
- Struts 2 学习(一)
文章目录 @[toc] #Struts及其优势 Struts 2 是一个MVC框架,以WebWork设计思想为核心,吸收了Struts 1的部分优点. Struts 2拥有更加广阔的前景,自身功能强大 ...
- equals()方法和hashCode()方法
1.equal()方法 2.hasCode()方法 2.1 Object的hashCode() 2.2 hashCode()的作用 3.String中equals()和hashCode()的实现 4. ...
- python模块----yagmail模块、smtplib模块 (电子邮件)
yagmail模块 python标准库发送电子邮件的模块比较复杂,so,许多开源的库提供了更加易用的接口来发送电子邮件,其中yagmail是使用比较广泛的开源项目,yagmail底层依然使用smtpl ...
- Cisco交换机管理员配置
conf tservice timestamps debug datetime msec localtime yearservice timestamps log datetime msec loca ...
- 31.FTP简介
1.FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP 命令与参 ...