ApiPost V3引入了预执行脚本和后执行脚本的概念,详细可以通过链接:《ApiPost的预执行脚本和后执行脚本》了解学习更多。本文主要介绍如何在预执行脚本里增加请求参数。

使用场景

我们可能需要在请求时发送一些参数,而这些参数是通过其他参与发送的请求参数计算而来的。举例:

接口:https://console.apipost.cn/need_token.php

body请求参数如下:

参数 参数描述 
 user_id  用户ID
 nick_name  用户名

header请求参数如下:

参数 参数描述 
 token  由body的请求参数user_id、nick_name和用户头UA通过md5 加密后组成 
 

如上面的情况,我们需要在发送前,先通过body的请求参数user_id、nick_name和用户头UA通过md5 加密计算得出一个token放到header里才行。ApiPost如何实现这个需求呢?

我们可以通过在预执行脚本里增加请求参数来实现。

具体实现

如下图,我们已经在body里添加好了我们需要的参数。

我们接下来要做的是通过预执行脚本计算出token并添加到header参数。

我们先做个小实验,先在预执行脚本里定义一个临时变量raw_token,其值由

request.request_bodys.user_id + request.request_bodys.nick_name + navigator.userAgent

组成。其实后面就会讲到,request就是请求参数对象,navigator就是用户环境浏览器对象。

然后把这个变量放到get里,目的是看看服务器到底会不会接收到我们目标中由user_id、nick_name、UA组成的字符串。发送结果如下:

成功!我们通过在服务器端打印的结果来看,这个参数就是我们发送的body参数加上UA组成的字符串。

那么接下来就好办了,我们只需要把这个变量md5后放到header参数里就行了。

并在发送后,服务器成功接收header参数token:

request 对象

如同上面所说,我们可以在预执行脚本里,通过 request 对象来获得请求的参数数据。该对象结构如下:

{
    "url": "https://console.apipost.cn/need_token.php",  // 字符串,请求URL
    "method": "POST",    // 字符串,请求方式
    "timeout": 25000,    // 数字,请求超时时间限制(毫秒)
    "contentType": "application/x-www-form-urlencoded", //字符串,请求contentType
    "request_bodys": { // 对象,预定义请求Body参数
        "user_id": "1",
        "nick_name": "jim green"
    },
    "request_headers": { // 对象,预定义请求Header参数
        "Authorization": "Basic amltOnB3ZDEyMw=="
    }
}

navigator对象

Navigator 对象包含有关浏览器的信息,同正常浏览器的Navigator  对象属性相同。

ApiPost如何在预执行脚本里添加请求参数?的更多相关文章

  1. ApiPost的预执行脚本和后执行脚本

    ApiPost的预执行脚本和后执行脚本主要是用来定义变量.但是它们有什么区别呢? 预执行脚本 在当前接口发送请求前执行的脚本,可以理解为beforeSend的时候执行. 一般在这里,我们可以设置一些前 ...

  2. elasticsearch设置执行脚本并添加开机启动 (转)

    elasticsearch设置执行脚本并添加开机启动 在/etc/init.d目录下新建文件elasticsearch #!/bin/sh #chkconfig: 2345 80 05 #descri ...

  3. 预备JS执行环境,预执行脚本

    page.evaluateOnNewDocument(pageFunction, ...args) pageFunction <function|string> Function to b ...

  4. thinkphp 3.2视图里添加URL参数 实例

    使用TP的时候URL传参 到控制器里 视图里 <ul> <volist name="content" id="data"> <li ...

  5. 动态向SqlParameter 里添加相应参数

    先定义一个List,然后再往List里面添加SqlParameter对象,然后将List转为SqlParameter数组即可 List<SqlParameter> ilistStr = n ...

  6. 接口测试进阶接口脚本使用--apipost(预/后执行脚本)

    预执行脚本的作用时间 预执行脚本是一个请求发送前执行的脚本. 预执行脚本的作用 预执行脚本可以完成以下作用: 编写JS函数等实现复杂计算: 变量的打印 定义.获取.删除.清空环境变量 定义.获取.删除 ...

  7. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  8. UNIX crontab自动执行脚本

    crontab 是不会加载环境变量的你手动执行可以是因为登录了oracle用户加载了环境变量,你可以在脚本里添加,echo $ORACLE_HOME  echo $ORACLE_SID 等等试试,看看 ...

  9. [ 转载 ] ssh连接远程主机执行脚本的环境变量问题

    近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: co ...

随机推荐

  1. 4.用IntelliJ IDEA 创建Maven Web

    一.File→New→ Project 二.Maven→org.apache.maven.archetypes:maven-archetype-webapp→Next(记得打钩) 三.填入后Next→ ...

  2. A股调整结束 很可能明天开始阶段性反弹 目标3100左右

    A股调整结束 很可能明天开始阶段性反弹 目标至少AC等距. A浪2685-3059=374 C浪2715+374=3089 长周期看 A股处于 2300-4300长期震荡中.A股的牛市还要等几年.

  3. JUnit白盒测试之基本路径测试:三次找到假球

    前言 记录一次软件测试课程的课后作业,作业内容是白盒测试中的基本路径测试,步骤如下 分析程序的控制流 计算环形复杂度 找出基本路径 设计测试用例 执行测试用例(要求使用JUnit) 作业要求 使用白盒 ...

  4. 相见恨晚的 Git 命令动画演示,一看就懂!

    虽然 Git 是一个强大的工具,但是我觉得大部分人都会同意我说的:它也可以是一个--噩梦!我一直觉得,使用 Git 的时候把操作过程在脑海里视觉化会非常有用:当我执行某个命令的时候,分支之间是如何交互 ...

  5. Java 连接数据库总是报错

    mysql账号密码是正确的,但是一直报账号密码错误. 报错信息: java.sql.SQLException: Access denied for user 'root'@'localhost' (u ...

  6. vue按需引入/全局引入echarts

    npm install echarts -S 1.按需引入 新建echarts.js公共引入 // 文件路径 @/lib/echarts.js 自行配置 // 加载echarts,注意引入文件的路径 ...

  7. python class类的属性应用及init初始化实践 ---勇者斗恶龙

    最近在熟悉python的基础语法,刚好老师布置了个课后作业感觉挺有意思的,就记录下来了学习过程. 题目如下: 刚拿到题目就想到了init 初始化属性,还列了下思路:(ps:notepad++写的比较糙 ...

  8. Go语言笔记(1)变量的定义与赋值

    变量的定义与赋值 在go笔记系列开始之前,我强烈建议大家使用Goland的IDM,配合vscode使用真的非常亲民. 1.go程序基本结构 首先,是go程序的基本结构,主要有package引入包.im ...

  9. HDU1087:Super Jumping! Jumping! Jumping!(DP水题)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  10. 写一个TODO App学习Flutter本地存储工具Moor

    写一个TODO App学习Flutter本地存储工具Moor Flutter的数据库存储, 官方文档: https://flutter.dev/docs/cookbook/persistence/sq ...