3分钟
resScript (resRules)-通过脚本动态设置规则
rulesFile可以指定一个脚本,whistle在执行脚本时会自动在全局传人:
url: 请求的完整路径method: 请求方法ip(clientIp): 客户端ipheaders: 请求头部body: 请求内容(只有匹配了reqScript才会有该字段),如果没有请求内容为空字符串(''),如果请求内容大于16k,可能只能获取请求前面16k长度的内容(whistle >= v1.5.18)rules: 存放新规则的数组values: 存放临时values的对象(v1.7.1开始支持)render(tplStr, data): 内置microTemplate,方便通过模板渲染数据(v1.7.1开始支持)getValue(key): 获取Values中对应key的值(v1.7.1开始支持)parseUrl: 同url.parse(v1.7.1开始支持)parseQuery: 同querystring.parse(v1.7.1开始支持)statusCode: 响应状态码(v1.7.1开始支持)resHeaders: 响应头(v1.7.1开始支持)serverIp: 服务器ip(v1.7.1开始支持)
用该方法可以解决此问题#19,也可以用来做ip_hash等,具体用法看下面的例子
例子:
设置静态规则列表
www.ifeng.com resScript://{resScript.txt}resScript.txt:
# 第一行没有这个注释符号,whistle会认为是一个脚本
http://www.ifeng.com/index.html redirect://http://www.ifeng.com/?test
www.ifeng.com resType://text通过脚本设置规则列表
www.ifeng.com resScript://{resScript.js}resScript.js:
const options = parseUrl(url);
rules.push(`${options.host} resCookies://{cookies.json}`);
values['cookies.json'] = {
serverIp,
clientIp,
from: 'resScript'
};
学员评价