脚本读取/修改接口请求信息
Apifox 使用文档
# 脚本读取/修改接口请求信息
脚本如何读取/修改接口请求信息主要使用pm.request
。
注意
- 脚本可以读取所有请求参数信息,但是只能修改 header 和 query 参数,不能修改其他参数。
- 只有在预执行脚本里修改请求信息才是有效的,在后执行脚本里修改无效。
# URL 相关信息
// 获取 url 对象
var urlObject = pm.request.url;
// 获取完整接口请求 URL,包含 query 参数
var url = urlObj.toString();
// 获取协议(http 或 https)
var protocol = urlObj.protocol;
// 获取 端口
var port = urlObj.port;
# Header 参数
获取 header 参数
// 获取 Header 参数对象
var headers = pm.request.headers;
// 获取 key 为 field1 的 header 参数的值
var field1 = headers.get('field1');
// 已键值对象方式获取所有 query 参数
var headersObject = headers.toObject();
// 遍历整个 query
headers.each(item => {
console.log(item.key); // 输出参数名
console.log(item.value); // 输出参数值
});
修改 header 参数
// 获取 Header 参数对象
var headers = pm.request.headers;
// 增加 header 参数
headers.add({
key: 'field1',
value: 'value1',
});
// 修改 query 参数(如不存在则新增)
headers.upsert({
key: 'field2',
value: 'value2',
});
# Query 参数
获取 query 参数
// 获取 Query 参数对象
var queryParams = pm.request.url.query;
// 获取 key 为 field1 的 query 参数的值
var field1 = queryParams.get('field1');
// 已键值对象方式获取所有 query 参数
var quertParamsObject = queryParams.toObject();
// 遍历整个 query
queryParams.each(item => {
console.log(item.key); // 输出参数名
console.log(item.value); // 输出参数值
});
修改 query 参数
// 获取 Query 参数对象
var queryParams = pm.request.url.query;
// 增加 query 参数
queryParams.add({
key: 'field1',
value: 'value1',
});
// 修改 query 参数(如不存在则新增)
queryParams.upsert({
key: 'field2',
value: 'value2',
});
# Body 参数
Body 参数来自pm.request.body
,pm.request.body 是一个RequestBody
实例。
参考:http://www.postmanlabs.com/postman-collection/RequestBody.html
注意
Body 参数在只能读取,不能直接修改。如需修改 Body 里的数据,请在 Body 里引用变量,然后在脚本里设置变量的值,以达到修改的目的。
# 一、body 类型为 form-data
获取 form-data 信息
// 当 body 类型为 form-data 时,从 pm.request.body.formdata 获取请求参数
var formData = pm.request.body.formdata;
// 获取 key 为 field1 的 form-data 参数的值
var field1 = formData.get('field1');
console.log(field1); // 控制台打印 field1
// 已键值对象方式获取所有 formdata 参数
var formdataObject = formData.toObject();
console.log(formdataObject); // 控制台打印 formdataObject
// 遍历整个 form-data 数据
formData.each(item => {
console.log(item.key); // 控制台打印参数名
console.log(item.value); // 控制台打印参数值
});
# 二、body 类型为 x-www-form-urlencode
获取 x-www-form-urlencode 信息
// 当 body 类型为 x-www-form-urlencode** 时,从 pm.request.body.urlencoded 获取请求参数
var formData = pm.request.body.urlencoded;
// 获取 key 为 field1 的 form-data 参数的值
var field1 = formData.get('field1');
// 已键值对象方式获取所有 formdata 参数
var formdataObject = formData.toObject();
// 遍历整个 form 数据
formData.each(item => {
console.log(item.key); // 控制台打印参数名
console.log(item.value); // 控制台打印参数值
});
# 三、body 类型为 json
获取 json 信息
// 当 body 类型为 json 时,从 pm.request.body.raw 获取请求参数
try {
var jsonData = JSON.parse(pm.request.body.raw);
console.log(jsonData); // 控制台打印参整个 json 数据
} catch (e) {
console.log(e);
}
# 四、body 类型为 raw
获取 raw 信息
// 当 body 类型为 raw 时,从 pm.request.body.raw 获取请求参数
var raw = pm.request.body.raw;
console.log(raw); // 控制台打印参整个 raw 数据