引言

在API调试过程中,后置脚本是提升效率的关键功能之一。作为IDEA插件FastRequest的核心特性,后置脚本允许开发者在请求完成后动态处理响应数据,实现自动化逻辑。本文将深入探讨其应用场景与实现方法。


一、后置脚本的核心作用

后置脚本(Post-Script)基于Groovy语言编写,支持以下典型场景:

  1. 自动提取响应数据(如Token、会话ID)
  2. 动态校验响应状态码或数据结构
  3. 将响应结果存储到环境变量,供后续请求复用

二、实战示例:Token自动提取与注入

场景描述

假设登录接口返回Token,需在后续请求的Header中携带该Token。通过后置脚本可自动化完成这一流程。后端服务基于 SpringBoot + Sa-Token 实现登录

img

代码实现 基于登录 api 的响应做处理

有一个登录 API 需要去执行

http://localhost:8083/admin/login
{
  "username": "admin",
  "password": "123456"
}

假如登录 api 正常返回 token 的格式如下

{
  "success": true,
  "code": 200,
  "msg": null,
  "data": {
    "tokenName": "satoken",
    "tokenValue": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..aD7rCipecZN5vB3hXQ3MQlTv81slnDLvA_6ZVW-OLrc",
    "isLogin": true,
    "loginId": "1",
    "loginType": "login",
    "tokenTimeout": 2591999,
    "sessionTimeout": 2591998,
    "tokenSessionTimeout": -2,
    "tokenActiveTimeout": -1,
    "loginDevice": "PC",
    "tag": null
  }
}

可以通过对该登录 API 新增后置脚本,对响应进行字段的抽取,将tokenValue字段抽取出来,并且放入项目的全局头中。

import com.alibaba.fastjson.JSON

String token = JSON.parseObject(rfr.response.body()).getJSONObject("data").getString("tokenValue")

rfr.projectHeader.put("satoken", token)

截图

img

使用效果

  • 后续无需再手动修改 token 头参数,减少人为错误
  • 此方式同样适用于访问 API 后将一些响应中的值放入环境变量,后续给其他 API 使用

三、基于访问任意 API 执行 token 刷新

场景描述

访问了任意一个 API 登录过期,例如访问一个后端需要登录的 API http://localhost:8083/admin/article/list

img

代码实现 基于任意 api去刷新 token

登录过期统一返回如下

{
  "success": false,
  "code": 401000,
  "msg": "登录失效",
  "data": null,
  "path": null,
  "time": "2025-02-21T01:17:37.727+00:00"
}

那么我们可以增加一个基于项目的全局的后置脚本。大致逻辑是基于响应码返回401000去额外执行一次登录 API 并且将登录头重新刷新到 FastRequest 项目级别头参数中。

import cn.hutool.http.HttpUtil
import com.alibaba.fastjson.JSON
import cn.hutool.http.HttpRequest
import cn.hutool.http.HttpResponse
import com.alibaba.fastjson.JSON


String code = JSON.parseObject(response.body()).getString("code")

if ("401000".equals(code)) {
    HttpRequest myRequest = HttpUtil.createPost(rfr.currentDomain + "/login")
    myRequest.body("{\"username\":\"admin\",\"password\":\"123456\"}")
    HttpResponse loginResponse = myRequest.execute()
    
    if (myResponse.isOk()) {
           //对loginResponse的响应进行解析
        String newToken = JSON.parseObject(loginResponse.body()).getJSONObject("data").getString("tokenValue")

        rfr.projectHeader.put("satoken", newToken)

    }
}

截图

img

优势

此方式可以针对整个项目,只要登录过期,就可以通过后置脚本刷新 token,之后执行的 api 将使用新的登录 token。比较方便


安装

IDEA 插件市场搜索api buddy 或者 Fast Request

img

结语

FastRequest的后置脚本功能,通过灵活的Groovy 脚本支持 ,将API调试的自动化程度提升到了新高度。无论是简化鉴权流程,还是实现复杂的数据验证逻辑,都能显著提升开发效率。建议结合官方文档进一步探索更多高级特性。

Logo

宁波官方开源宣传和活动阵地,欢迎各位和我们共建开源生态体系!

更多推荐