如何从邮递员中另一个请求的预请求选项卡 运行 GET 和 POST 请求?
How to run a GET and a POST request from pre request tab of another request in postman?
我处于一种情况,我需要 运行 一个基于请求 A 和 B 的响应的请求(比如请求 C)。这里 A 是一个 GET & B 是一个 POST 要求。现在我已经尝试在 C 的预请求选项卡中使用 pm.sendRequest 两次。但我面临的问题主要是,B 一直 运行ning 领先于 A。这意味着 POST 在 GET 之前是 运行ning。结果我无法成功 运行 请求 C.
这是我的预请求脚本示例:
const getOTP = {
method: 'GET',
url: `${pm.environment.get('base_url')}/${pm.environment.get('common_path')}/otp-login?msisdn=${pm.environment.get('msisdnWhite')}`,
header: {
'User-Agent': 'something..',
'Accept-Language' : 'en'
},
};
setTimeout(15000)
const postOTP={
method : 'POST',
url : `${pm.environment.get('base_url')}/${pm.environment.get('common_path')}/otp-login`,
header: {
'Content-Type':'application/json',
'Accept-Language':'en'
},
body:{
mode : 'application/json',
raw: JSON.stringify(
{
"msisdn":"123456789",
"otp":"0000"
} )
}
};
pm.sendRequest(getOTP, (err, response) => {
const jsonResponse = response.json();
pm.environment.set("GETOTP",jsonResponse.result)
console.log(jsonResponse);
});
pm.sendRequest(postOTP, (err, response) => {
const jsonData = response.json();
pm.environment.set("access_token",jsonData.access_token)
});
看来你需要运行请求A,等待响应,然后运行请求B,再次等待响应。
为此,您可以在 A 请求的回调中为 B 触发 sendRequest()
。
例如:
// send GET request A
pm.sendRequest (getOTP, (err, response) => {
// here you are in the callback of the request A
// this runs after the response of the request A
const jsonResponse = response.json ();
pm.environment.set ("GETOTP", jsonResponse.result)
console.log (jsonResponse);
// send POST request B
pm.sendRequest (postOTP, (err, response) => {
// here you are in the callback of the request B
const jsonData = response.json ();
pm.environment.set ("access_token", jsonData.access_token)
});
});
我看到你设置了一个setTimeout(15000)
,我猜是为了等待A的回答。你不应该为此使用setTimeout,所以请删除它。
那是说您需要知道,如果您希望 setTimeout()
有用,您需要在两个 sendRequest()
函数之间使用它。在两个变量声明之间,它现在没有做太多事情。
我处于一种情况,我需要 运行 一个基于请求 A 和 B 的响应的请求(比如请求 C)。这里 A 是一个 GET & B 是一个 POST 要求。现在我已经尝试在 C 的预请求选项卡中使用 pm.sendRequest 两次。但我面临的问题主要是,B 一直 运行ning 领先于 A。这意味着 POST 在 GET 之前是 运行ning。结果我无法成功 运行 请求 C.
这是我的预请求脚本示例:
const getOTP = {
method: 'GET',
url: `${pm.environment.get('base_url')}/${pm.environment.get('common_path')}/otp-login?msisdn=${pm.environment.get('msisdnWhite')}`,
header: {
'User-Agent': 'something..',
'Accept-Language' : 'en'
},
};
setTimeout(15000)
const postOTP={
method : 'POST',
url : `${pm.environment.get('base_url')}/${pm.environment.get('common_path')}/otp-login`,
header: {
'Content-Type':'application/json',
'Accept-Language':'en'
},
body:{
mode : 'application/json',
raw: JSON.stringify(
{
"msisdn":"123456789",
"otp":"0000"
} )
}
};
pm.sendRequest(getOTP, (err, response) => {
const jsonResponse = response.json();
pm.environment.set("GETOTP",jsonResponse.result)
console.log(jsonResponse);
});
pm.sendRequest(postOTP, (err, response) => {
const jsonData = response.json();
pm.environment.set("access_token",jsonData.access_token)
});
看来你需要运行请求A,等待响应,然后运行请求B,再次等待响应。
为此,您可以在 A 请求的回调中为 B 触发 sendRequest()
。
例如:
// send GET request A
pm.sendRequest (getOTP, (err, response) => {
// here you are in the callback of the request A
// this runs after the response of the request A
const jsonResponse = response.json ();
pm.environment.set ("GETOTP", jsonResponse.result)
console.log (jsonResponse);
// send POST request B
pm.sendRequest (postOTP, (err, response) => {
// here you are in the callback of the request B
const jsonData = response.json ();
pm.environment.set ("access_token", jsonData.access_token)
});
});
我看到你设置了一个setTimeout(15000)
,我猜是为了等待A的回答。你不应该为此使用setTimeout,所以请删除它。
那是说您需要知道,如果您希望 setTimeout()
有用,您需要在两个 sendRequest()
函数之间使用它。在两个变量声明之间,它现在没有做太多事情。