Knife4j调试全局对象参数自动化

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,其中具备了在线调试功能,但是在许多场景当中需要在请求头或者请求体当中携带认证信息,这样就会增加调试的繁琐性。

所以针对JWT类型的接口,可以使用Knife4j自带的AfterScript功能,该功能是Knife4j自2.0.6版本开始新增的一项特性功能,在每个接口进行调试Tab中,开发者可以根据Knife4j提供的全局变量,在接口调用之前编写一段JavaScript脚本,当接口调用成功后,Knife4j会执行该脚本。

举个栗子,当调用登录接口后,每个接口请求时带上authorization参数,此时可以通过该脚本动态赋值全局authorization参数,省去复制粘贴的麻烦。

全局对象

Knife4j目前主要提供ke(Knife4j Environment)对象来获取或者操作全局对象,主要包含的对象:

  • global: 全局操作,可以获取或者设置目前的全局参数
    • setHeader(name,value): 设置当前逻辑分组下的全局参数Header请求头
    • setAllHeader(name,value): 设置所有逻辑分组下的全局参数Header请求头
    • setParameter(name,value): 设置当前逻辑分组下,主要是针对query类型参数进行设置全局设置。
    • setAllParameter(name,value): 设置所有逻辑分组下的全局参数,主要是query类型
  • response: 当前请求接口响应内容
    • headers: 服务端响应Header对象,注意,此处所有的header的名称全部进行小写转换
    • data: 服务端响应数据(json/xml/text等等)
javascript 复制代码
ke={
    global:{
        setHeader:function(name,value){
  
        },
        setAllHeader:function(name,value){
  
        },
        setParameter:function(name,value){
  
        },
        setAllParameter:function(name,value){
  
        }
    },
    response:{
        headers:{
  
        },
        data:{
  
        }
    }
}

代码示例

获取服务端响应的Header参数

当我们调用API接口后,开发者如果想拿到服务端写出的响应Header头Content-Type,并且进行控制台输出打印,可以这样编写AfterScript

javascript 复制代码
var contentType=ke.response.headers["content-type"];
console.log("响应ContentType:"+contentType)

根据服务端响应的值设置全局Header

假设某一个接口响应的JSON内容如下:

json 复制代码
{
  "code": 200,
  "msg": "成功获取访问令牌",
  "data": "43ebda13-16e2-4e26-84f2-4cade5ae86f0",
  "time": "2024-11-12T16:18:50.602521"
}

该接口是登录接口,每个接口请求都需要带上authorization的请求头,因此我们访问登录接口后,设置全局Header参数authorization,代码如下:

javascript 复制代码
var code = ke.response.data.code;

//判断,如果服务端响应code是200才执行操作
if( code == 200 ){
    // 获取token
    var token = ke.response.data.data;

    //1、如过需要设置的参数是Header,则设置全局Header
    ke.global.setAllHeader("authorization", token);

    //2、如过需要设置的参数是query类型,则设置全局Parameter
    ke.global.setAllParameter("authorization", token);
}
相关推荐
benchmark_cc1 小时前
量化开发中,什么时候应该停止手动下载股票数据?
python·数据分析·pandas·量化交易·1024程序员节·股票数据·quantdash
泡茶喝茶写代码1 小时前
A股量化策略回测实战:从行情数据到绩效评估(第 15 篇):新高新低策略
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
全栈练习生2 小时前
Jev 决策模型
python·ai·1024程序员节
LMT流氓兔2 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
光依旧2 小时前
day-trader-skill实测:让Claude Code当交易助理,纯Python+确定性+fail-closed
python·量化交易·ai agent·a股·风控·claude code·开源项目实测
Helix2502 小时前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
OnlyEasyCode2 小时前
IIS开放端口转发后端
运维·服务器
2601_965619692 小时前
没时间给开源项目做宣传?AI自动化生成整套物料
人工智能·开源·自动化
CCblandy3 小时前
前缀缓存命中率不靠引擎靠排列:本机仿真 3 轮,易变字段放开头 98.0%→0.0%
人工智能·python·算法·自然语言处理·性能优化
合合技术团队3 小时前
合合信息旗下TextIn面向全球市场推出文档处理自动化公有云服务
运维·自动化