postman Pre-request Script(预处理)post请求获取sign(接口鉴权)

发布时间 2023-11-02 17:42:35作者: 陈娟

背景

  请求业务接口时需要先调用auth应用的鉴权接口获取sign(类似其他系统登录接口返回的token),否则会提示:鉴权失败,从而导致业务接口无法使用。获取sign接口请求参数为业务接口的请求参数,所以Pre-request Script(预处理)post请求内的body为变量。

一、Pre-request Script(预处理)简介

  预处理是指在发送HTTP请求之前,先执行一段脚本用于预处理请求,用来处理和获取所需要的数据。

二、Pre-request Script(预处理)使用

  1、获取当前时间 

    //获取当前时间
    const moment = require('moment');
    var date =moment().format('YYYY-MM-DD HH:mm:ss');
    pm.globals.set('newdate',date);
    console.log(date);
    输出值:

    

  2、获取时间戳

    //获取时间戳
    var tidtime =Math.round(new Date().getTime());
    pm.globals.set('newtime',tidtime);
    console.log(tidtime);
    输出值:  

    

三、Pre-request Script(预处理)发送post请求

  1、定义post请求url

   //鉴权地址

   const getSignUrl = 'xxx/sign/getSign';

  2、获取业务接口的参数,做为鉴权接口的参数

   // 获取请求体中的数据,字典
   let raw = pm.request.body.raw;
   // 把请求参数转成JSON
   let requestBody = JSON.parse(raw);
   // 请求参数拼接
   let paramStr = {};
   paramStr ['appId'] = requestBody.appId;
   paramStr ['certiId'] = requestBody.certiId;
   paramStr ['token'] = requestBody.token;
   paramStr ['tid'] = requestBody.tid;
   paramStr ['data'] = requestBody.data;
   paramStr ['date'] = date;
   console.log(paramStr);
  3、鉴权接口实际请求参数
  const getSignRequestData = {
        url: getSignUrl,
        method: 'POST',
        header: {
            'Content-Type': 'application/json'
            },
        body: {
            mode: 'raw',
            raw:JSON.stringify(paramStr)
            }
          };

  4、发送post请求

  //发送post请求
  pm.sendRequest(getSignRequestData, function (err, response) {
      if (err) {
          console.error(err);
          return;
          }
  //输出鉴权接口返回值
  console.log(response.json());
  
  if (response.json().payload.status = "true") {
  // 如果请求成功获取sign值
  pm.environment.set('sign',response.json().payload.sign);
    }
  });
  5、业务接口使用获取到的sign值
  引用方式 —— {{sign}}

  

结论

  经过以上操作,业务接口可以直接发送post请求,每次请求的时间和sign值在Pre-request Script(预处理)内都会预先处理好。