Asp.net core WebApi 配置自定义swaggerUI和中文注释,Jwt Bearer配置
1.创建asp.net core webApi项目
默认会引入swagger的Nuget包
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
2.配置基本信息和中文注释(默认是没有中文注释的)
2.1创建一个新的controller
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace webapi.Controllers
{/// <summary>/// 学生接口/// </summary>[Route("api/[controller]")][ApiController]public class StudentController : ControllerBase{/// <summary>/// 获取学生列表/// </summary>/// <returns></returns>[HttpGet]public ActionResult GetList(){return Ok("学生列表");}/// <summary>///根据Id查询/// </summary>/// <param name="Id">学生Id</param>/// <returns></returns>[HttpGet("{Id}")]public ActionResult GetById(int Id){return Ok();}/// <summary>/// 获取token/// </summary>/// <param name="token"></param>/// <returns></returns>[HttpGet("{id}/{name}")]public string GetToken([FromHeader] string token){return "123";}/// <summary>/// 添加学生信息/// </summary>/// <param name="stu">学生信息</param>/// <returns></returns>[HttpPost]public ActionResult Add([FromBody] StudentInfo stu){return Ok();}/// <summary>/// 修改学生信息/// </summary>/// <param name="stu">学生信息</param>/// <param name="stu"></param>/// <returns></returns>[HttpPut]public ActionResult Update([FromBody] StudentInfo stu){return Ok();}/// <summary>///根据学生学号删除学生/// </summary>/// <param name="Id">学号</param>/// <returns></returns>[HttpDelete("{Id}")]public ActionResult DeletById(int Id){return Ok();}}
}
2.2创建学生类
namespace webapi
{/// <summary>///学生表/// </summary>public class StudentInfo{/// <summary>///学号/// </summary>public int Sno { get; set; }/// <summary>/// 姓名/// </summary>public string Name { get; set; }/// <summary>/// 年龄/// </summary>public int Age { get; set; }}
}
2.3 生成api中文注释xml(会把控制器上的方法和参数的中文注释生成xml文档)
选择项目-属性-生成-输出-勾选文档文件,xml文档文件路径可以默认
也可以直接双击项目,进入项目配置页面输入
<GenerateDocumentationFile>True</GenerateDocumentationFile>
builder.Services.AddSwaggerGen(p =>{p.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo(){Contact = new Microsoft.OpenApi.Models.OpenApiContact(){Email = "peng@g.com",Name = "pzx",Url = new Uri("http://www.baidu.com")},Description = "swagger设置基本信息",Title = "webapi练习"});//加载api中文注释,true是加载控制器上的注释p.IncludeXmlComments(AppContext.BaseDirectory + Assembly.GetExecutingAssembly().GetName().Name + ".xml", true);});
运行项目-中文注释就出来了
3.默认的swaggerUI不是太好看我们可以使用自定义的UI
Nuget下载:IGeekFan.AspNetCore.Knife4jUI
<ItemGroup><PackageReference Include="IGeekFan.AspNetCore.Knife4jUI" Version="0.0.13" /><PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /></ItemGroup>
3.1配置使用Knife4jUI
// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){app.UseSwagger();app.UseSwaggerUI(p =>{p.SwaggerEndpoint("/swagger/v1/swagger.json", "wepai");p.RoutePrefix = "swagger";//设置前缀,默认swagger});//使用自定义UIapp.UseKnife4UI(p =>{p.SwaggerEndpoint("/swagger/v1/swagger.json", "wepai");p.RoutePrefix = "";//设置前缀,默认swagger});}
swagger默认使用的swaggerUI,运行路径是
http://localhost:5160/swagger/index.html
要使用Knife4jUI可以把默认的swaggerUI的配置注释掉,把自己路由前缀设置为swagger
如果两个ui都想保留,就把前缀设置未不同,我这swaggerUI的前缀是swagger,Knife4jUI的前缀是空字符串
项目运行选择UI可以在launchSettings.json文件配置 lauchUrl和自己设置的RoutePrefix 值保持一直就可以了。
运行看效果,比默认的ui看起来更加的整洁
4.swaggerUI 配置 Bearer认证
builder.Services.AddSwaggerGen(p =>{p.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo(){Contact = new Microsoft.OpenApi.Models.OpenApiContact(){Email = "peng@g.com",Name = "pzx",Url = new Uri("http://www.baidu.com")},Description = "swagger设置基本信息",Title = "webapi练习"});//Bearer 的scheme定义var securityScheme = new OpenApiSecurityScheme(){Description = "JWT Authorization 头使用Bearer 体系方案. 例: \"Authorization: Bearer 你的token\"",Name = "Authorization",//参数添加在头部In = ParameterLocation.Header,//使用Authorize头部Type = SecuritySchemeType.Http,//内容为以 bearer开头Scheme = JwtBearerDefaults.AuthenticationScheme,//加了这个就不需要 输入Bearer 空格了,只要输入token就可以了BearerFormat = "JWT"};//把所有方法配置为增加bearer头部信息var securityRequirement = new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference = new OpenApiReference{Type = ReferenceType.SecurityScheme,Id = "JWT认证"}},new string[] {}}};//注册到swagger中p.AddSecurityDefinition("JWT认证", securityScheme);p.AddSecurityRequirement(securityRequirement);//加载api中文注释p.IncludeXmlComments(AppContext.BaseDirectory + Assembly.GetExecutingAssembly().GetName().Name + ".xml", true);});
效果如下
Knife4jUI加请求头就比较方便(直接添加就行了,不需要配置)
配置和生成jwt可以看我下面的文章
https://blog.csdn.net/qq_41942413/article/details/134680803?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134680803%22%2C%22source%22%3A%22qq_41942413%22%7D
相关文章:
Asp.net core WebApi 配置自定义swaggerUI和中文注释,Jwt Bearer配置
1.创建asp.net core webApi项目 默认会引入swagger的Nuget包 <PackageReference Include"Swashbuckle.AspNetCore" Version"6.2.3" />2.配置基本信息和中文注释(默认是没有中文注释的) 2.1创建一个新的controller using Micr…...
DNS 查询结果逐行解释
文章目录 FlagsADDITIONALANSWER SECTIONQuery timeSERVERWHENDNS PortAuthoritative answer权威DNS服务器Non-authoritative answer推荐阅读 DNS查询后,查询结果一般如下: mirrorUbuntu22:~$ dig www.baidu.com; <<>> DiG 9.18.12-0ubuntu0…...
ArcGIS制作广场游客聚集状态及密度图
文章目录 一、加载实验数据二、平均最近邻法介绍1. 平均最近邻工具2. 广场游客聚集状态3. 结果分析三、游客密度制图一、加载实验数据 二、平均最近邻法介绍 1. 平均最近邻工具 “平均最近邻”工具将返回五个值:“平均观测距离”、“预期平均距离”、“最近邻指数”、z 得分和…...
同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client接收数据
所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 发送数据6个字节的数据:0x11,0x22,0x33,0x44,0x55,0x66 在专业版调试软件中编辑指令,…...
MQ - KAFKA 高级篇
kafak是一个分布式流处理平台,提供消息持久化,基于发布-订阅的方式的消息中间件,同时通过消费端配置相同的groupId支持点对点通信。 ##适用场景: 构造实时流数据管道,用于系统或应用之间可靠的消息传输.数据采集及处理,例如连接到一个数据库系统,捕捉表…...
如何快速查找最后(最右侧)隐藏列
实例需求:定位工作表中的最后(最右侧)隐藏列,处理其中的数据。 通常思路是从工作表最后列开始,倒序检查每个列,直到找到隐藏列或者检查完毕(无隐藏列)。 Sub LastColumn()Dim visR…...
精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的
不同种类的精密制造成品有区别化的制造工序、工艺流转、品质标准、生产成本、营销策略等,而多工厂、多仓库、多车间、多部门协同问题却是不少精密制造企业遇到的管理难题。 有些产品结构较为复杂,制造工序繁多,关联业务多,传统的…...
TypeScript 的高级技巧
1 — 高级类型(Advanced Types) 使用 TypeScript 的高级类型,如映射类型和条件类型,可以基于现有类型构建新类型。通过使用这些类型,您可以在强类型系统中更改和操作类型,从而使您的代码具有更大的灵活性和…...
TiDB 7.x 源码编译之 TiDB Server 篇,及新特性详解
本文将介绍如何编译 TiDB Server 源码。以及阐释 TiDB Server 7.x 的部分新特性。 TiDB v7.5.0 LTS 计划于 2023 年 11 月正式 Release,目前代码虽未冻结,但已经可以看到 Alpha 版本的 Code 了,本文代码将以 v7.5.0-alpha 为基准。 TiDB Se…...
Hadoop实验putty文件
🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 很多朋友反馈做hadoop实验中的putty找不到Connection-SSH-Auth路径下找不到Private key for authentication私有密钥,无法将转…...
研发人员绩效考核难题及解决措施
研发部门是技术型企业的核心人员,研发人员的设计贯穿着产品实现过程包括后续的持续改进。倘若研发人员的设计源头得以保障,那么后续工作包括研发人员的绩效考核,相对简单。接下来华恒智信便根据多年来从事的人力资源相关的服务经验为您对于研…...
Inference with C# BERT NLP Deep Learning and ONNX Runtime
目录 效果 测试一 测试二 测试三 模型信息 项目 代码 下载 Inference with C# BERT NLP Deep Learning and ONNX Runtime 效果 测试一 Context :Bob is walking through the woods collecting blueberries and strawberries to make a pie. Question …...
6、原型模式(Prototype Pattern,不常用)
原型模式指通过调用原型实例的Clone方法或其他手段来创建对象。 原型模式属于创建型设计模式,它以当前对象为原型(蓝本)来创建另一个新的对象,而无须知道创建的细节。原型模式在Java中通常使用Clone技术实现,在JavaSc…...
图像万物分割——Segment Anything算法解析与模型推理
一、概述 在视觉任务中,图像分割任务是一个很广泛的领域,应用于交互式分割,边缘检测,超像素化,感兴趣目标生成,前景分割,语义分割,实例分割,泛视分割等。 交互式分割&am…...
Redis实战篇笔记(最终篇)
Redis实战篇笔记(七) 文章目录 Redis实战篇笔记(七)前言达人探店发布和查看探店笔记点赞点赞排行榜 好友关注关注和取关共同关注关注推送关注推荐的实现 总结 前言 本系列文章是Redis实战篇笔记的最后一篇,那么到这里…...
游戏配置表的导入使用
游戏配置表是游戏策划的标配,如下图: 那么程序怎么把这张配置表导入使用? 1.首先,利用命令行把Excel格式的文件转化成Json格式: json-excel\json-excel json Tables\ Data\copy Data\CharacterDefine.txt ..\Clien…...
❀dialog命令运用于linux❀
目录 ❀dialog命令运用于linux❀ msgbox部件(消息框) yesno部件(yesno框) inputbox部件(输入文本框) textbox部件(文本框) menu部件(菜单框) fselect部…...
【算法】蓝桥杯2013国C 横向打印二叉树 题解
文章目录 题目链接题目描述输入格式输出格式样例自己的样例输入自己的样例输出 思路整体思路存储二叉搜索树中序遍历并存储计算目标数的行号dfs遍历并写入数组初始化和处理输入输出初始化处理输入处理输出 完整的代码如下 结束语更新初始化的修改存储二叉搜索树的修改中序遍历和…...
XunSearch 讯搜 error: storage size of ‘methods_bufferevent’ isn’t known
报错: error: storage size of ‘methods_bufferevent’ isn’t known CentOS8.0安装迅搜(XunSearch)引擎报错的解决办法 比较完整的文档 http://www.xunsearch.com/download/xs_quickstart.pdf 官方安装文档 http://www.xunsearch.com/doc/php/guide/start.in…...
基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析
3 serverless数据分析 大纲 3 serverless数据分析3.1 创建Lambda3.2 创建API Gateway3.3 结果3.4 总结 3.1 创建Lambda 在Lambda中,我们将使用python3作为代码语言。 步骤图例1、入口2、创建(我们选择使用python3.7)3、IAM权限(…...
08、分析测试执行时间及获取pytest帮助
官方用例 # content of test_slow_func.py import pytest from time import sleeppytest.mark.parametrize(delay,(1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.0,0.1,0.2,0,3)) def test_slow_func(delay):print("test_slow_func {}".format(delay))sleep(delay)assert…...
视频集中存储/智能分析融合云平台EasyCVR平台接入rtsp,突然断流是什么原因?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
JavaScript 复杂的<三元运算符和比较操作>的组合--案例(一)
在逆向的时候,碰上有些复杂的js代码,逻辑弄得人有点混; 因此本帖用来记录一些棘手的代码,方便自己记忆,也让大家拓展认识~ ----前言 内容: function(e, t, n) {try {1 (e "{" e[0] ? JSON.parse(e) : JSON.parse(webInstace.shell(e))).Status || 200 e.Code…...
uniapp搭建内网映射测试https域名
搭建Https域名服务器 使用github的frp搭建,使用宝塔申请免费https证书,需要先关闭宝塔nginx的反向代理,申请完域名后再开启反向代理即可。 教程 新版frp搭建教程 启动命令 服务器端 sudo systemctl start frps本地 cd D:\软件安装包\f…...
国防科技大博士招生入学考试【50+论文主观题】
目录 回答模板大意创新和学术价值启发 论文分类(根据问题/场景分类)数学问题Efficient Multiset Synchronization(高效的多集同步【简单集合/可逆计数Bloom过滤器】)大意创新和学术价值启发 An empirical study of Bayesian netwo…...
CUDA简介——编程模式
1. 引言 前序博客: CUDA简介——基本概念 CPU是用于控制的。即,host控制整个程序流程: 1)程序以Host代码main函数开始,然后顺序执行。 Host代码是顺序执行的,并执行在CPU之上。Host代码会负责Launch ke…...
Linux 软件安装
目录 一、Linux 1、Linux异常解决 1、JDK安装 1、Linux卸载JDK 2、Linux安装JDK 2、Redis安装 一、Linux 1、Linux异常解决 1、Another app is currently holding the yum lock; waiting for it to exit... 解决办法: rm -f /var/run/yum.pid1、杀死这个应用程序 ps a…...
flask之邮件发送
一、安装Flask-Mail扩展 pip install Flask-Mail二、配置Flask-Mail 格式:app.config[参数]值 三、实现方法 3.1、Mail类 常用类方法 3.2、Message类,它封装了一封电子邮件。构造函数参数如下: flask-mail.Message(subject, recipient…...
【Filament】Filament环境搭建
1 前言 Filament 是一个实时物理渲染引擎,用于 Android、iOS、Linux、macOS、Windows 和 WebGL 平台。该引擎旨在提供高效、实时的图形渲染,并被设计为在 Android 平台上尽可能小而尽可能高效。Filament 支持基于物理的渲染(PBR)&…...
外包干了2个月,技术倒退2年。。。。。
先说一下自己的情况,本科生,20年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...
电脑做网站怎么解析域名/网页开发
我们可以使用UIWebView加载包含HTML标签以及样式但是后台返回HTML只是HTML的一部分包含HTML标签的文字内容加载到UILable 或者 UITextView中的text中今日,GMIC 2016正式在北京开幕,开幕仪式上,中关村发展集团总经理周云帆作了致辞演讲&#x…...
基于html做电商网站论文/北京百度推广官网首页
🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 数据集 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 数据集 完整源码&…...
济宁网站建设排行/关键词推广优化
习题11-7 奇数值结点链表 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode {int data;ListNode *next; };函数接口定义: struct ListNode *rea…...
综合网站建设课程设计/搜索引擎营销优化
存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控制结构. 可以进行sql编程. 查看现有的存储过程: Show procedure status 删除存储过程 Drop procedure…...
免费logo商标设计软件/seo外链平台热狗
春节前看到树莓派 2代开始销售,第一时间在淘宝下单购买,无奈春节期间放假,要到3月份才可能收到,只能用QEMU模拟器先熟悉树莓系统。对从turbo Pascal开始的人来讲,如果能在树莓系统使用Pascal那是最顺手的。上网发现Laz…...
网站备案的幕布是什么意思/企业网络搭建
//main.c //include基本概念//include是预处理指令,翻译之前会替换,编译之前左的处理,#都是预处理指令,翻译时候会添加别的内容进来。#include <stdio.h> // #是预编译指令,告诉系统printf函数是存在的, 告诉系统…...