经典场景配方
把 concepts 与 scripting 组合成真实业务打法。每个场景给出:目标 → 流程 → 可直接照搬到界面的脚本 → 预期结果。脚本逻辑均经真实应用端到端验证。
示例基于本地测试服务端(
/oauth2/token、/protected、/echo、/json等)。连你自己的接口时换掉路径与前置 URL 即可。
场景1:登录取 Token、全组自动携带
目标:调登录接口拿 Token 存起来,之后所有接口自动带上它,无需手工复制。
请求 A —— 登录(后置脚本存 Token)
POST /oauth2/token,body 用表单:grant_type=password&username=qruser&password=qrpass&client_id=qr-client&client_secret=qr-secret
后置加一条脚本:
async function onResponse(context, url, response) {
var j = response.body.parseJSON();
if (j && j.access_token) {
sdk.env.set('authToken', j.access_token); // 存进运行期黑板
sdk.env.set('tokenType', j.token_type || 'Bearer');
}
return response;
}
请求 B —— 携带 Token(同一段脚本可复制到所有需鉴权接口)
GET /protected,前置加一条脚本:
async function onRequest(context, url, request) {
var tok = sdk.env.get('authToken'); // 从黑板取
var ty = sdk.env.get('tokenType') || 'Bearer';
if (tok) { request.headers.set('Authorization', ty + ' ' + tok); }
return request;
}
预期结果
| 操作 | 结果 |
|---|---|
| 先发 A(登录) | 200,响应含 access_token,Token 被存下 |
| 再发 B(携带) | 200,响应 {authorized:true, ...} |
| 关掉脚本再发 B | 401(前置不跑→没注入 Token,反证正是脚本带上的) |
关键:A、B 要在同一分组、绑同一环境(运行期变量按环境隔离),路径片段靠环境前置 URL 补全。