Swagger 调试,我不想再复制粘贴token啦~
作为后端开发,进行Web Api 调试,除了使用 Postman, Apifox 等 Web Api 调试工具之外,我想使用Swagger进行调试应该是更方便,更常用的方式了吧。


那么在需要 token 授权的情况下,每次调试都需要调用一下登录API, 然后复制返回的 token, 再粘贴到上图的文本框里,点一下Authorize按钮,是不是很麻烦呢?
我的懒病犯了,我真的不想再复制粘贴token啦~
要是可以只要调用一下登录接口,返回的token就自动添加进去,自动授权,那该多好啊~
Let's go!
第一步:添加 custom.js 文件
- 在 webapi 的项目中添加
wwwroot文件夹; - 新建
custom.js文件到wwwroot/swagger-ui/目录下,目录没有自己建,当然js文件名自己随便取; - 编辑
custom.js文件内容:
console.log("Custom JS has been loaded and executed.");
const originalFetch = window.fetch;
window.fetch = function(...args) {
const [resource, config] = args;
return originalFetch.apply(this, args).then(response => {
// 检查请求的 URL
const requestUrl = new URL(response.url, window.location.origin).pathname;
if (requestUrl.endsWith("/login")) {
// 克隆响应以便读取
response.clone().json().then(data => {
const token = data.result.token;
if (token) {
console.log("Token received via fetch override:", token);
authorizeSwagger(token);
} else {
console.warn("Token not found in login response.");
}
}).catch(err => {
console.error("Failed to parse login response:", err);
});
}
return response;
});
}
// 定义授权函数
function authorizeSwagger(token) {
const bearerToken = 'Bearer ' + token;
console.log("Setting Swagger UI Authorization with token:", bearerToken);
if (window.ui && window.ui.authActions) {
window.ui.authActions.authorize({
Bearer: {
name: 'Bearer',
schema: {
type: 'apiKey',
in: 'header',
name: 'Authorization',
description: '',
},
value: bearerToken,
}
});
console.log("Authorization set successfully");
} else {
console.warn("Swagger UI authActions not available yet.");
}
}
第二步:启用静态文件服务
在Program.cs 中,启用静态文件服务;
var app = builder.Build();
// 启用静态文件服务
app.UseStaticFiles();
第三步:SwaggerUI 中间件中注入 js 脚本
使用InjectJavascript的方式将上面的custom.js注入到SwaggerUI中间件中。
// 启用Swagger
app.UseSwagger();
app.UseSwaggerUI(options =>
{
options.InjectJavascript("/swagger-ui/custom.js");
options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
OK!
大家快来试试吧~

Swagger 调试,我不想再复制粘贴token啦~的更多相关文章
- ueditor编辑文章时候,复制粘贴内容,原来的图片不能显示
ueditor编辑文章时候.当现有文章有图片的时候, 再复制粘贴文本进去的时候.里面的图片就不能显示了, 编辑器查看文章Html代码,图片路径显示为:src="http://localhos ...
- xshell的快捷复制粘贴设置
今天试着用xshell连接Linux,运行一些命令的时候想快点复制粘贴实现效率,却发现还要右键选择复制,再右键选择粘贴,很是麻烦. 看了一下xshell的设置,其实可以自己设置成快捷方式 以xshel ...
- jQuery event的复制粘贴的坑
jQuery为了兼容性会把系统暴露出来的event重新整理一遍,但是复制粘贴的event就被丢掉了. 所以要在所有原生浏览器想实现复制粘贴,大家都用flash实现了.其实只要用原生的方法捕获事件就ok ...
- 个人永久性免费-Excel催化剂功能第82波-复制粘贴按源区域大小自动扩展收缩目标区域
日常工作中,复制粘贴的操作,永远是最高频的操作,没有之一,在最高频的操作上,进行优化,让过程更智能,比一天到晚鼓吹人工智能替换人的骇人听闻的新闻来得更实际.此篇带来一点点的小小的改进,让日后无数的复制 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- Android中的复制粘贴
Android中的复制粘贴 The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的 ...
- 不注册COM在Richedit中使OLE支持复制粘贴
正常情况下在Richedit中使用OLE,如果需要OLE支持复制粘贴,那么这个OLE对象必须是已经注册的COM对象. 注册COM很简单,关键问题在于注册时需要管理员权限,这样一来,如果希望APP做成绿 ...
- 三星手机 Samsung Galaxy S3 无法复制粘贴的不完美解决方法
问题简单描述 从上周开始我的Samsung Galaxy S3手机就无法实现复制粘贴功能了,每次复制时都提示复制到了剪贴板,但是粘贴时就会发现根本粘贴不了,无法打开剪贴板.真的是莫明其妙啊,我的手机没 ...
- VIM复制粘贴大全!
原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...
- Android Studio 复制粘贴图片到drawable文件夹没有效果 - 解决方法
我想放一些图片到drawable文件夹里面,但是简单的复制文件,粘贴文件,或者拖拽文件,都不起作用.不知道为什么,之前是可以的,突然就不行了. 解决方案 在drawable文件夹的目录上右键,选择Re ...
随机推荐
- 火山引擎数智平台:高性能ChatBI的技术解读和落地实践
导读:大模型能力的发展和成熟,催生出新一代智能化 BI-- ChatBI,即通过自然语言处理(NLP)与大型语言模型(LLMs)的结合,极大简化数据分析过程,提高效率并降低分析门槛.火山引擎数智平台旗 ...
- Mybatis整合多数据源
背景 有时候我们需要查询来自多个库表的数据内容,但是又不想起多个服务,可以业务需要这些数据那该怎么办呢?那么其实Mybatis 是支持整合多数据源,并随时进行切换. 解决 引入依赖 首先引入dyn ...
- 靠着这篇笔记,我拿下了16k车载测试offer!
如何写简历 个人技能 个人技能一般不要超过10条,一般在8条内. 一.测试流程和技术 1.熟悉车载系统研发和测试流程,能独立编写各种测试文档. 2.熟悉车载系统测试用例设计思路,能独立编写仪表和车 ...
- DDL-操作表
1.查询表 查询当前数据库下所有表名称 show tables; 查询表结构 desc 表名称; 2.创建表 create table 表名 ( 字段名1 数据类型1, 字段名2 数据类型2, ... ...
- JSON——简介
JSON--简介 JSON--基础语法 JSON--json数据与java对象的转换 // 将java对象转为json字符串 User user = new User(1,&q ...
- AJAX——简介
AJAX 同步与异步 AJAX 快速入门
- JSP——简介-快速入门
JSP 简介 JSP 快速入门 <%@ page contentType="text/html;charset=UTF-8" language=&qu ...
- Windows平台下安装与配置MySQL9
要在Windows平台下安装MySQL,可以使用图行化的安装包.图形化的安装包提供了详细的安装向导,以便于用户一步一步地完成对MySQL的安装.本节将详细介绍使用图形化安装包安装MySQL的方法. 1 ...
- PHP中几种常见的开发模式
设计模式 单例模式 $_instance必须声明为静态的私有变量 构造函数和析构函数必须声明为私有,防止外部程序new 类从而失去单例模式的意义 getInstance()方法必须设置为公有的,必须 ...
- 墨天轮最受DBA欢迎的数据库技术文档-监控篇
好久不见,<墨天轮最受欢迎的技术文档>系列文章回归啦!本期主题数据库监控篇,希望能够帮助到大家!此外,为感谢大家支持,原文文末也给大家带来了返场福利,欢迎大家进入原文参与~ 数据库监控是许 ...