首页 > 其他分享 >Swagger 调试,我不想再复制粘贴token啦~

Swagger 调试,我不想再复制粘贴token啦~

时间:2024-12-13 16:11:40浏览次数:3  
标签:console window js 复制粘贴 token Swagger response

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

那么在需要 token 授权的情况下,每次调试都需要调用一下登录API, 然后复制返回的 token, 再粘贴到上图的文本框里,点一下Authorize按钮,是不是很麻烦呢?

我的懒病犯了,我真的不想再复制粘贴token啦~

要是可以只要调用一下登录接口,返回的token就自动添加进去,自动授权,那该多好啊~

Let's go!

第一步:添加 custom.js 文件
  1. 在 webapi 的项目中添加wwwroot文件夹;
  2. 新建custom.js文件到wwwroot/swagger-ui/目录下,目录没有自己建,当然js文件名自己随便取;
  3. 编辑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!

大家快来试试吧~

标签:console,window,js,复制粘贴,token,Swagger,response
From: https://www.cnblogs.com/tony-god/p/18605146

相关文章

  • Transformers 框架 Pipeline 任务详解(三):词元分类(token-classification)和命名实体识别
    微信公众号:老牛同学公众号标题:Transformers框架Pipeline任务详解(三):词元分类(token-classification)和命名实体识别公众号链接:https://mp.weixin.qq.com/s/r2uFCwPZaMeDL_eiQsEmIQ在自然语言处理(NLP)领域,Token-Classification(词元分类)任务是一项关键的技术,这项技术广泛应用于......
  • SpringBoot项目实战(37)--使用Beetl模板实现代码生成器(六)-- 完整的Mybatis-plus低代码生
        在上文中介绍了Mybatis-plus增删改查的整套代码。本文利用上文的整套代码改造Beetl代码模版,并依据这些模版,选择一个数据库表生成增删改查相关的程序代码。 一、数据库表    因为上文用了comm_api_key作为代码模板,已经有了一套示例代码,本文使用另外的数......
  • ApiPost如何使用另一个接口的返回参数作为当前接口的Token发送Post请求
    1.全局参数-》全局header里面:Token:{{token_var}}2.登录接口预执行脚本:apt.sendRequest({"method":"post","url":"http://127.0.0.1:15555/user/login","content-type":"application/json","dat......
  • 在 .NET 9 中让您的 OpenAPI(Swagger)文档 UI 变得出色
            从.NET9开始,默认模板中不再包含SwaggerUIwebapi。虽然文档仍然包含在内,但现在通过调用MapOpenApi,UI不再存在。很高兴,重新获得文档UI相对容易。但UI本来就很无聊,所以让我们来点更花哨的东西吧!认识Scalar        假设我们已经通过dotnet......
  • 如何理解 AI 对话中的 Token?
    什么是Token?1、定义:在自然语言处理(NLP)和AI对话系统中,token通常指的是文本中的一个单元,可以是一个单词、一个标点符号、一个数字,或者甚至是一个子词(如“playing”可以被分成“play”和“##ing”)。2、通俗理解:想象你正在玩拼图游戏,每个拼图块代表一个单词或符号,这些拼图块就是to......
  • 记一次SA-TOKEN的清空TOKEN的历程
    公司使用的是SA-TOKEN框架,领导提出要求每次项目启动的时候使所有登录的人员下线。废话不多说,直接上过程:1.定位登录逻辑2.找到token存放的位置模拟登录方法,直接调用 SA-TOKEN框架的 StpUtil.login方法断点进去,发现: 这个应该是创建token的,继续 有save字......
  • vxe-table 树表格单元格选择复制粘贴
    vxe-table树表格单元格选择复制粘贴,树结构默认是平级粘贴,可以通过clip-config.isDeepPaste启用深层数据结构的粘贴;需要注意只支持tree-config.transform模式<template><div><vxe-tablebordershow-overflowkeep-sourceheight="500"......
  • jenkins配置github token
    GITHUB_TOKEN是一个由GitHub提供的,用于通过GitHubAPI在GitHub上执行各种操作的访问令牌。它可以授予对GitHub仓库、组织和包的各种级别的访问权限。这个令牌可以被用于从内部GitHubActions工作流中访问仓库,或从外部系统和服务中访问GitHub。这里有一些GITHUB_TOKEN的常见用途:......
  • [JAVA]SpringBoot集成Swagger
    Swagger简介号称世界上最流行的Api框架;RestFulApi文档在线自动生成工具=>Api文档与Api定义同步更新直接运行,可以在线测试API接口;支持多种语言:(Java,Php…)  官网:https://swagger.io/在项目使用Swagger需要springbox;swagger2ui SpringBoot集成Swagger新建一个SpringBoot......
  • [JAVA]SpringCloud集成Swagger
    一.什么是Swagger官网:https://swagger.io/swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RestFul风格的web服务,总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger是一......