postman在前置处理器Pre-request Scripts轮询等待上个接口返回

在执行一个接口之前需要查询上一个接口的返回,但是上一个接口返回的字段value是异步返回,所以需要轮询一段时间,进行判断,所以就有了前置轮询等待的需求。

1.请求参数:以下是请求体为raw的形式,在Pre-request Scripts前置请求接口,设置轮询次数和间隔时间,base_request是需要轮询请求接口的请求参数,包括了请求的url、method、header、body;其中body包括mode(请求体类型)、raw(请求体类型为raw,则需要传raw)。以下的update_credit_request也是同理,因为轮询脚本一次调了两次接口。

2.请求方法:pm.sendRequest()用来发送请求

3.轮询核心:setInterval方法可以定时执行脚本,需要传入执行函数(getResult)、执行间隔时间(单位:mms),执行函数内调用pm.sendRequest()来发送请求,if/else做参数的匹配,如果匹配到想要的参数调用clearInterval(timer)来终止轮询,在这里我们还定义了一个i,来设置轮询的次数,超过轮询次数 我们就终止轮询。

var env = pm.environment.get("ENV")
var str_requestBody= pm.request.body.raw   // 获取请求体中的数据,字典
var json_requestBody = JSON.parse(str_requestBody)  // 把请求参数转成JSON
var mobile_no = json_requestBody.requestBody.mobile_no
console.log("请求手机号:",mobile_no) 

const base_request = {
    url: "http://www.baidu1.com",
    method: 'POST',
    header: 'Content-Type:application/json',
    body : {
    mode: 'raw',
    raw: {
    "url": "http://www.baidu.com",
    "method": "post",
    "requestBody": {
        "env": env,
        "product_code": "CHANGPING",
        "mobile_no": mobile_no
    },
    "timeout": 60,
    "headers": {
        "Content-Type": "application/json",
        "user": "qizhuxiedaima",
        "cardId_admin": "62"
    }
}
}
};

const update_credit_request = {
    url: "http://www.baidu2.com",
    method: 'POST',
    header: 'Content-Type:application/json',
    body : {
    mode: 'raw',
    raw: {
    "url": "http://www.baidu2.com",
    "method": "post",
    "requestBody": {
        "env": env,
        "product": "CHANGPING",
        "query_info": mobile_no
    },
    "timeout": 60,
    "headers": {
        "Content-Type": "application/json",
        "user": "qizhuxiedaima",
        "cardId_admin": "108"
    }
}
}
};

console.log("URL的信息:",base_request)

var i = 0;
// 封装发送请求方法,用于计数器调用
function getResult(){
    pm.sendRequest(base_request, function(err, response) {
        i += 1;
        if(err){
            console.log(err);
        }
        else{
            res = response.json()
            data = res.data.data
            a = data.hasOwnProperty("appl_no_credit_all")  // 判断是否存在该字段元素
            if(a == true){
            state = res.data.data.appl_no_credit_all
            console.log(state)
            if( state.match("PS") || state.match("RJ") || i > 40){   // 配置轮询次数,轮询终止条件:tradeStatus字段变为TRADE_SUCCESS,或轮询次数达到设定值
               clearInterval(timer); 
            }
            else{
                pm.sendRequest(update_credit_request,function(err,update_response){
                    last = update_response.json()
                    result = last.data.result
                    console.log(result)
                    if(result[0].match("通过处理阶段-FINISHED")){
                        console.log(result)
                        clearInterval(timer)
                    }
                })                
            }
            }
            else{
                console.log(data)
            }
        }

    });
    }

timer = setInterval(getResult, 30000);  // 配置轮询间隔(单位毫秒),例如没60秒轮询一次

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Postman中使用Pre-request Script发送请求,可以通过以下步骤实现: 1. 打开Postman,选择需要发送请求的请求。 2. 在请求的“Pre-request Scripts”标签页中,编写脚本,例如: ``` pm.sendRequest({ url: 'http://example.com/api/auth', method: 'POST', header: { 'Content-Type': 'application/json' }, body: { mode: 'raw', raw: JSON.stringify({ username: 'user', password: 'password' }) } }, function (err, res) { if (err) { console.log(err); } else { console.log(res); } }); ``` 上述代码中,使用`pm.sendRequest()`方法发送了一个POST请求,用于认证用户。在请求中设了请求头和请求体,并在回调函数中打印了错误和响应信息。 3. 在脚本中发送完请求后,需要在回调函数中调用`pm.variables.set()`方法,将返回的数据存储到环境变量中,例如: ``` pm.sendRequest({ // ... }, function (err, res) { if (err) { console.log(err); } else { console.log(res); pm.variables.set('authToken', res.json().token); } }); ``` 上述代码中,使用`pm.variables.set()`方法将返回的令牌存储到名为`authToken`的环境变量中。 4. 在请求中使用环境变量,例如: ``` GET http://example.com/api/data Authorization: Bearer {{authToken}} ``` 上述代码中,使用`{{authToken}}`语法在请求头中引用了存储在环境变量中的令牌。 注意:在使用脚本发送请求时,需要确保请求的响应能够在后续请求中使用到。可以通过将请求的响应存储到环境变量中,或者直接在后续请求中引用请求的响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值