当前位置:   article > 正文

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

postman前置处理器

在执行一个接口之前需要查询上一个接口的返回,但是上一个接口返回的字段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,来设置轮询的次数,超过轮询次数 我们就终止轮询。

  1. var env = pm.environment.get("ENV")
  2. var str_requestBody= pm.request.body.raw // 获取请求体中的数据,字典
  3. var json_requestBody = JSON.parse(str_requestBody) // 把请求参数转成JSON
  4. var mobile_no = json_requestBody.requestBody.mobile_no
  5. console.log("请求手机号:",mobile_no)
  6. const base_request = {
  7. url: "http://www.baidu1.com",
  8. method: 'POST',
  9. header: 'Content-Type:application/json',
  10. body : {
  11. mode: 'raw',
  12. raw: {
  13. "url": "http://www.baidu.com",
  14. "method": "post",
  15. "requestBody": {
  16. "env": env,
  17. "product_code": "CHANGPING",
  18. "mobile_no": mobile_no
  19. },
  20. "timeout": 60,
  21. "headers": {
  22. "Content-Type": "application/json",
  23. "user": "qizhuxiedaima",
  24. "cardId_admin": "62"
  25. }
  26. }
  27. }
  28. };
  29. const update_credit_request = {
  30. url: "http://www.baidu2.com",
  31. method: 'POST',
  32. header: 'Content-Type:application/json',
  33. body : {
  34. mode: 'raw',
  35. raw: {
  36. "url": "http://www.baidu2.com",
  37. "method": "post",
  38. "requestBody": {
  39. "env": env,
  40. "product": "CHANGPING",
  41. "query_info": mobile_no
  42. },
  43. "timeout": 60,
  44. "headers": {
  45. "Content-Type": "application/json",
  46. "user": "qizhuxiedaima",
  47. "cardId_admin": "108"
  48. }
  49. }
  50. }
  51. };
  52. console.log("URL的信息:",base_request)
  53. var i = 0;
  54. // 封装发送请求方法,用于计数器调用
  55. function getResult(){
  56. pm.sendRequest(base_request, function(err, response) {
  57. i += 1;
  58. if(err){
  59. console.log(err);
  60. }
  61. else{
  62. res = response.json()
  63. data = res.data.data
  64. a = data.hasOwnProperty("appl_no_credit_all") // 判断是否存在该字段元素
  65. if(a == true){
  66. state = res.data.data.appl_no_credit_all
  67. console.log(state)
  68. if( state.match("PS") || state.match("RJ") || i > 40){ // 配置轮询次数,轮询终止条件:tradeStatus字段变为TRADE_SUCCESS,或轮询次数达到设定值
  69. clearInterval(timer);
  70. }
  71. else{
  72. pm.sendRequest(update_credit_request,function(err,update_response){
  73. last = update_response.json()
  74. result = last.data.result
  75. console.log(result)
  76. if(result[0].match("通过处理阶段-FINISHED")){
  77. console.log(result)
  78. clearInterval(timer)
  79. }
  80. })
  81. }
  82. }
  83. else{
  84. console.log(data)
  85. }
  86. }
  87. });
  88. }
  89. timer = setInterval(getResult, 30000); // 配置轮询间隔(单位毫秒),例如没60秒轮询一次

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/631851
推荐阅读
相关标签
  

闽ICP备14008679号