ApiPost如何在预执行脚本里添加请求参数?
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如何在预执行脚本里添加请求参数?的更多相关文章
- ApiPost的预执行脚本和后执行脚本
ApiPost的预执行脚本和后执行脚本主要是用来定义变量.但是它们有什么区别呢? 预执行脚本 在当前接口发送请求前执行的脚本,可以理解为beforeSend的时候执行. 一般在这里,我们可以设置一些前 ...
- elasticsearch设置执行脚本并添加开机启动 (转)
elasticsearch设置执行脚本并添加开机启动 在/etc/init.d目录下新建文件elasticsearch #!/bin/sh #chkconfig: 2345 80 05 #descri ...
- 预备JS执行环境,预执行脚本
page.evaluateOnNewDocument(pageFunction, ...args) pageFunction <function|string> Function to b ...
- thinkphp 3.2视图里添加URL参数 实例
使用TP的时候URL传参 到控制器里 视图里 <ul> <volist name="content" id="data"> <li ...
- 动态向SqlParameter 里添加相应参数
先定义一个List,然后再往List里面添加SqlParameter对象,然后将List转为SqlParameter数组即可 List<SqlParameter> ilistStr = n ...
- 接口测试进阶接口脚本使用--apipost(预/后执行脚本)
预执行脚本的作用时间 预执行脚本是一个请求发送前执行的脚本. 预执行脚本的作用 预执行脚本可以完成以下作用: 编写JS函数等实现复杂计算: 变量的打印 定义.获取.删除.清空环境变量 定义.获取.删除 ...
- kettle文件自动化部署(shell脚本执行):命令行参数传入
shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...
- UNIX crontab自动执行脚本
crontab 是不会加载环境变量的你手动执行可以是因为登录了oracle用户加载了环境变量,你可以在脚本里添加,echo $ORACLE_HOME echo $ORACLE_SID 等等试试,看看 ...
- [ 转载 ] ssh连接远程主机执行脚本的环境变量问题
近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: co ...
随机推荐
- 线程安全,syncronized 用法
1,为什么有线程安全问题? 当多个线程同时共享同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作是不会发生数据冲突问题. public class Tra ...
- 《java编程思想》对象导论
1.抽象过程 所有编程语言都提供抽象机制.可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量,所谓的'类型'是指“所抽象的是什么?”汇编语言是对底层机器的轻微抽象. java的基本 特性 ...
- [noip模拟赛]某种数列问题<dp>
某种数列问题 (jx.cpp/c/pas) 1000MS 256MB 众所周知,chenzeyu97有无数的妹子(阿掉!>_<),而且他还有很多恶趣味的问题,继上次纠结于一排妹子的排法以 ...
- AI学习笔记:特征工程
一.概述 Andrew Ng:Coming up with features is difficult, time-consuming, requires expert knowledge. &quo ...
- B. The Monster and the Squirrel
B. The Monster and the Squirrel Ari the monster always wakes up very early with the first ray of the ...
- Zookeeper是如何实现分布式锁的
[toc] Zookeeper是如何实现分布式锁的 标签 : Zookeeper 分布式 实现分布式锁要考虑的重要问题 1. 三个核心要素 加锁, 解锁, 锁超时 2. 三个问题 要保证原子性操作, ...
- 手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊
第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 在第一章中运用Socket和ServerSocket简单的实现了网络通信.这一章,利用BIO编程模型进行 ...
- Golang笔记集
学习Golang了, 下面分享我的, 还有我收集的Golang的学习资料 我的基础笔记地址: https://github.com/zhuchangwu/go-study-notes 其他参考: Go ...
- C语言把浮点数转换为字符串
目录 1.把float/double格式化输出到字符串 2.注意事项 3.版权声明 1.把float/double格式化输出到字符串 标准的C语言提供了atof函数把字符串转double,但是没有提供 ...
- python学习 0 python简介
一.Python简介 python是一门简单易学又功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程的特性.python优雅的语法和动态类型.以及其解释性的性质,使它在许多领域和大 ...