当前位置: 首页 > news >正文

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.配置基本信息和中文注释&#xff08;默认是没有中文注释的&#xff09; 2.1创建一个新的controller using Micr…...

DNS 查询结果逐行解释

文章目录 FlagsADDITIONALANSWER SECTIONQuery timeSERVERWHENDNS PortAuthoritative answer权威DNS服务器Non-authoritative answer推荐阅读 DNS查询后&#xff0c;查询结果一般如下&#xff1a; mirrorUbuntu22:~$ dig www.baidu.com; <<>> DiG 9.18.12-0ubuntu0…...

ArcGIS制作广场游客聚集状态及密度图

文章目录 一、加载实验数据二、平均最近邻法介绍1. 平均最近邻工具2. 广场游客聚集状态3. 结果分析三、游客密度制图一、加载实验数据 二、平均最近邻法介绍 1. 平均最近邻工具 “平均最近邻”工具将返回五个值:“平均观测距离”、“预期平均距离”、“最近邻指数”、z 得分和…...

同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client接收数据

所需设备&#xff1a; 内附链接 1、USB转SPI_I2C适配器(专业版); 首先&#xff0c;连接W5500模块与同旺科技USB TO SPI / I2C适配器&#xff0c;如下图&#xff1a; 发送数据6个字节的数据&#xff1a;0x11,0x22,0x33,0x44,0x55,0x66 在专业版调试软件中编辑指令&#xff0c…...

MQ - KAFKA 高级篇

kafak是一个分布式流处理平台,提供消息持久化,基于发布-订阅的方式的消息中间件&#xff0c;同时通过消费端配置相同的groupId支持点对点通信。 ##适用场景&#xff1a; 构造实时流数据管道,用于系统或应用之间可靠的消息传输.数据采集及处理,例如连接到一个数据库系统,捕捉表…...

如何快速查找最后(最右侧)隐藏列

实例需求&#xff1a;定位工作表中的最后&#xff08;最右侧&#xff09;隐藏列&#xff0c;处理其中的数据。 通常思路是从工作表最后列开始&#xff0c;倒序检查每个列&#xff0c;直到找到隐藏列或者检查完毕&#xff08;无隐藏列&#xff09;。 Sub LastColumn()Dim visR…...

精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的

不同种类的精密制造成品有区别化的制造工序、工艺流转、品质标准、生产成本、营销策略等&#xff0c;而多工厂、多仓库、多车间、多部门协同问题却是不少精密制造企业遇到的管理难题。 有些产品结构较为复杂&#xff0c;制造工序繁多&#xff0c;关联业务多&#xff0c;传统的…...

TypeScript 的高级技巧

1 — 高级类型&#xff08;Advanced Types&#xff09; 使用 TypeScript 的高级类型&#xff0c;如映射类型和条件类型&#xff0c;可以基于现有类型构建新类型。通过使用这些类型&#xff0c;您可以在强类型系统中更改和操作类型&#xff0c;从而使您的代码具有更大的灵活性和…...

TiDB 7.x 源码编译之 TiDB Server 篇,及新特性详解

本文将介绍如何编译 TiDB Server 源码。以及阐释 TiDB Server 7.x 的部分新特性。 TiDB v7.5.0 LTS 计划于 2023 年 11 月正式 Release&#xff0c;目前代码虽未冻结&#xff0c;但已经可以看到 Alpha 版本的 Code 了&#xff0c;本文代码将以 v7.5.0-alpha 为基准。 TiDB Se…...

Hadoop实验putty文件

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 很多朋友反馈做hadoop实验中的putty找不到Connection-SSH-Auth路径下找不到Private key for authentication私有密钥&#xff0c;无法将转…...

研发人员绩效考核难题及解决措施

研发部门是技术型企业的核心人员&#xff0c;研发人员的设计贯穿着产品实现过程包括后续的持续改进。倘若研发人员的设计源头得以保障&#xff0c;那么后续工作包括研发人员的绩效考核&#xff0c;相对简单。接下来华恒智信便根据多年来从事的人力资源相关的服务经验为您对于研…...

Inference with C# BERT NLP Deep Learning and ONNX Runtime

目录 效果 测试一 测试二 测试三 模型信息 项目 代码 下载 Inference with C# BERT NLP Deep Learning and ONNX Runtime 效果 测试一 Context &#xff1a;Bob is walking through the woods collecting blueberries and strawberries to make a pie. Question …...

6、原型模式(Prototype Pattern,不常用)

原型模式指通过调用原型实例的Clone方法或其他手段来创建对象。 原型模式属于创建型设计模式&#xff0c;它以当前对象为原型&#xff08;蓝本&#xff09;来创建另一个新的对象&#xff0c;而无须知道创建的细节。原型模式在Java中通常使用Clone技术实现&#xff0c;在JavaSc…...

图像万物分割——Segment Anything算法解析与模型推理

一、概述 在视觉任务中&#xff0c;图像分割任务是一个很广泛的领域&#xff0c;应用于交互式分割&#xff0c;边缘检测&#xff0c;超像素化&#xff0c;感兴趣目标生成&#xff0c;前景分割&#xff0c;语义分割&#xff0c;实例分割&#xff0c;泛视分割等。 交互式分割&am…...

Redis实战篇笔记(最终篇)

Redis实战篇笔记&#xff08;七&#xff09; 文章目录 Redis实战篇笔记&#xff08;七&#xff09;前言达人探店发布和查看探店笔记点赞点赞排行榜 好友关注关注和取关共同关注关注推送关注推荐的实现 总结 前言 本系列文章是Redis实战篇笔记的最后一篇&#xff0c;那么到这里…...

游戏配置表的导入使用

游戏配置表是游戏策划的标配&#xff0c;如下图&#xff1a; 那么程序怎么把这张配置表导入使用&#xff1f; 1.首先&#xff0c;利用命令行把Excel格式的文件转化成Json格式&#xff1a; json-excel\json-excel json Tables\ Data\copy Data\CharacterDefine.txt ..\Clien…...

❀dialog命令运用于linux❀

目录 ❀dialog命令运用于linux❀ msgbox部件&#xff08;消息框&#xff09; yesno部件&#xff08;yesno框&#xff09; inputbox部件&#xff08;输入文本框&#xff09; textbox部件&#xff08;文本框&#xff09; menu部件&#xff08;菜单框&#xff09; fselect部…...

【算法】蓝桥杯2013国C 横向打印二叉树 题解

文章目录 题目链接题目描述输入格式输出格式样例自己的样例输入自己的样例输出 思路整体思路存储二叉搜索树中序遍历并存储计算目标数的行号dfs遍历并写入数组初始化和处理输入输出初始化处理输入处理输出 完整的代码如下 结束语更新初始化的修改存储二叉搜索树的修改中序遍历和…...

XunSearch 讯搜 error: storage size of ‘methods_bufferevent’ isn’t known

报错&#xff1a; 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中&#xff0c;我们将使用python3作为代码语言。 步骤图例1、入口2、创建&#xff08;我们选择使用python3.7&#xff09;3、IAM权限&#xff08;…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...