脚本能力(开发者视角)
前置/后置脚本是快速请求的"瑞士军刀":动态签名、加解密、条件断言、跨请求传值都靠它。脚本用 JavaScript 编写,运行在内置 QuickJS 引擎里。
本篇只讲你在界面里能加什么、脚本能干什么;完整的 JavaScript API 签名见脚本 API 参考。
一个请求有两个"操作链"
在请求编辑页,你可以往前置和后置各加若干条步骤,按顺序执行。每个步骤是这几种之一:
| 步骤类型 | 界面里做什么 | 典型用途 |
|---|---|---|
| 脚本 | 写一段 JavaScript | 改请求头/body、加签、解密、条件逻辑 |
| 库脚本 | 引用一个保存好的公共脚本 | 多处复用"注入 Token""统一埋点" |
| 提取 | 从响应里取一个值存成变量 | 把登录返回的 token 传给下一个请求 |
| 断言 | 对响应提一条校验 | 状态码=200、某字段存在 |
| 等待 | 停若干毫秒 | 限流、轮询间隔 |
脚本怎么写:两个入口
脚本引擎在你的脚本里查找约定好的入口函数:
// 前置:能改"将要发出的请求"
async function onRequest(context, url, request) {
// 例如:注入一个头
request.headers.set('X-Trace-Id', $uuid.v4());
return request; // 必须把 request 返回
}
// 后置:能读、能改"拿到的响应"
async function onResponse(context, url, response) {
// 例如:把密文响应改写回明文供人看
return response;
}
- 前置链里写
onRequest,后置链里写onResponse。 - 函数名必须是这两个,否则被判"无入口、跳过"。
- 支持
await。
脚本里能改什么
改请求(onRequest 里的 request)
| 你想 | 怎么写 |
|---|---|
| 设置/覆盖请求头 | request.headers.set('Authorization', 'Bearer ' + tok) |
| 加/改查询参数 | request.queries.set('ts', String(Date.now())) |
| 读原始 body | var text = request.body.parseText() 或 request.body.parseJSON() |
| 整体改写 body | request.body = 新的字符串(赋值即可) |