-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
1.目前普通用法配置规则resBody://{reponse1}, 由于post请求的url都是一致的,每次mock不同数据需要临时重新修改。
不知道是否能定义规则,根据不同的reqBody,返回不同的resBody。一次性配置好,不需要临时再修改
2.尝试过whistle.script://test
exports.handleRequestRules = (ctx) => {
// ctx.fullUrl 可以获取请求url
// ctx.headers 可以获取请求头
// ctx.options 里面包含一些特殊的请求头字段,分别可以获取一些额外信息,如请求方法、设置的规则等
ctx.rules = ['www.qq.com file://{test.html}'];
ctx.values = { 'test.html': 'Hello world.' };
};
测试过Readme文档里的test脚本,可以mock成功。但是尝试获取请求体失败。
// 获取请求体数据
const requestBody = await new Promise((resolve, reject) => {
let data = [];
ctx.req.on('data', chunk => {
data.push(chunk);
});
ctx.req.on('end', () => {
resolve(Buffer.concat(data));
});
ctx.req.on('error', err => {
reject(err);
});
});
// 转换请求体数据为字符串
const requestBodyString = requestBody.toString();
console.log('原始请求体数据长度:', requestBody.length);
console.log('原始请求体数据:', requestBodyString);
// 解析 JSON 格式的请求体数据
let bodyData;
if (requestBodyString) {
try {
bodyData = JSON.parse(requestBodyString);
} catch (err) {
console.error('请求体解析错误:', err);
console.error('解析失败的请求体:', requestBodyString);
bodyData = null;
}
} else {
console.log('请求体为空');
bodyData = null;
}
js小白,麻烦大佬有空指导下
Metadata
Metadata
Assignees
Labels
No labels