返回介绍

文档

中间件

OAS 简介

实战指南

3.18 afterScript

发布于 2022-12-06 22:06:14 字数 2776 浏览 0 评论 0 收藏 0

输入图片说明 AfterScript 功能是 Knife4j2.0.6 版本开始新增的一项特性功能,在每个接口进行调试Tab中,开发者可以根据 Knife4j 提供的全局变量,在接口调用之前编写一段 JavaScript 脚本,当接口调用成功后, Knife4j 会执行该脚本。

主要应用场景:

  • 针对JWT类型的接口,调用登录接口后,每个接口请求时带上Token参数,此时可以通过该脚本动态赋值全局token参数,省去复制粘贴的麻烦.

3.18.1 全局对象

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等等)

设计结构:

ke={
global:{
setHeader:function(name,value){

},
setAllHeader:function(name,value){

},
setParameter:function(name,value){

},
setAllParameter:function(name,value){

}
},
response:{
headers:{

},
data:{

}
}
}

3.18.2 代码示例

1、获取服务端响应的Header参数

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

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

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

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

{
"code": 8200,
"message": null,
"data": {
"token": "1y1tn8tvw93fxixp79dcx0nugixkw4su"
}
}

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

var code=ke.response.data.code;
if(code==8200){
//判断,如果服务端响应code是8200才执行操作
//获取token
var token=ke.response.data.data.token;
//1、如何参数是Header,则设置当前逻辑分组下的全局Header
ke.global.setHeader("token",token);

}
友情提示

在2.0.8或者以前的版本中,该功能特性无法同时执行两个变量,场景参考这个issue,如果开发者遇到这个问题,则可以考虑升级一下版本,该问题会在2.0.9版本中解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文