我想在POSTMAN中运行一个预请求脚本,该脚本向UUID生成器API发送请求并将UUID保存为变量。我可以在请求体中调用它们,因为它们在那里是必需的。
最初,我有两个独立的请求(1)一个请求到UUID生成器API(2),另一个请求到我的私有API。我能够将3个uuid设置为变量,并在请求到我的私有API后将它们调用到主体中,没有问题,而且它可以工作。像这样:
GET https://www.uuidgenerator.net/api/version1/3
pm.collectionVariables.set("UUID_1", pm.response.text().split(" ")[1])
pm.collectionVariables.set("UUID_2", pm.response.text().split(" ")[2])
pm.collectionVariables.set("UUID_3", pm.response.text().split(" ")[3])
**Response:**
1. f3600940-3684-11ec-8d3d-0242ac130003
2. f3600b70-3684-11ec-8d3d-0242ac130003
3. f3600c6a-3684-11ec-8d3d-0242ac130003
**Variables in body of next Request:**
"data": {
"uuid": "{{UUID_1}}",
"uuid2": "{{UUID_2}}",
"uuid3": "{{UUID_3}}",
边注:我弄清楚如何从回复中获得个性化的原始文本数据的唯一方法是使用.split
和行数据为1,pm.response.text().split(" ")[1])
然而,我想简化事情并在预请求部分插入UUID生成器请求,因此我不需要两个单独的请求来完成此工作。但是,当插入与前面的请求相同的信息来设置这些变量时,它不起作用。
到目前为止,我的预请求脚本给出了一个错误(如下):
pm.sendRequest({
url: "https://www.uuidgenerator.net/api/version1/3",
method: 'GET'
}, function (err, res) {
pm.collectionVariables.set("UUID_1", pm.response.text().split(" ")[1])
pm.collectionVariables.set("UUID_2", pm.response.text().split(" ")[2])
pm.collectionVariables.set("UUID_3", pm.response.text().split(" ")[3])
});
POSTMAN Error:
There was an error in evaluating the Pre-request Script:Error: Cannot read property 'text' of undefined
基本上我在预请求脚本....中尝试collectionVariables.set
中的任何不同的变化
pm.collectionVariables.set("UUID_1", pm.response.text().split(" ")[1])
OR
pm.collectionVariables.set("UUID_2", pm.response.split(" ")[2])
OR
pm.collectionVariables.set("UUID_3", pm.response.[3])
我收到错误,否则我不会得到,如果它是它自己的请求(工作)
这让我相信这可能是我拥有的预请求脚本的内部工作。
你差一点就成功了。数组以[0]开头,您需要将响应声明为res,就像放在函数中一样:
pm.sendRequest({
url: "https://www.uuidgenerator.net/api/version1/3",
method: 'GET'
}, function(err, res){
pm.collectionVariables.set("UUID_1", res.text().split("rn")[0])
pm.collectionVariables.set("UUID_2", res.text().split("rn")[1])
pm.collectionVariables.set("UUID_3", res.text().split("rn")[2])
});
console.log(pm.response);