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 ...
随机推荐
- dyld
一.介绍 在 MacOS 和 iOS 上,可执行程序的启动依赖于 xnu 内核进程运作和动态链接加载器 dyld. dyld 全称 the dynamic link editor,即动态链接器,其本质 ...
- C#使用反射设置属性值
最近在Refix一个支持Excel文件导入导出功能时,发现有用到反射的相关技能.故而在网上查了些资料,通过代码调试加深下理解. class Program { static void Main(str ...
- 基于Quartz编写一个可复用的分布式调度任务管理WebUI组件
前提 创业小团队,无论选择任何方案,都优先考虑节省成本.关于分布式定时调度框架,成熟的候选方案有XXL-JOB.Easy Scheduler.Light Task Scheduler和Elastic ...
- 六、【Docker笔记】Docker数据管理
前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...
- VUE_shop(第十天)项目的打包优化
项目的打包优化 1.添加页面的加载效果 1.首先安装运行依赖nprocess,在main.js文件中的axios拦截器拦截请求的时候调用Npeocees.start. 在拦截响应的时候调用nproce ...
- flask 入门 之 Python Shell (一)
1.安装插件: pip install flask_script 2.代码: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from ...
- Python 1基础语法三(变量和标识符的区别)
一.字面量: 就是一个一个的值,如1.2.3.‘world’,就是它自己本身表达的字面值.字面意思,在程序中可以直接使用. 二.变量(variable): 可以用来保存字面量,变量本身没有任何意思:如 ...
- 20 java 基础回顾--中阶引入
一.数据类型 基本数据类型(共:四类八种) 整数 byte short int long 浮点 float double 字符 char 布尔 boolean 引用数据类型(new的数据) Stude ...
- 来说说Java中String 类的那些事情
今天正好学校那边的任务不多,我就打算把Stirng 的有关知识点都总结在一起了,这样有利于知识的系统性,要不然学多了就会越来越杂,最主要的是总会忘记,记忆的时间太短了,通过这种方式,把它归纳在一起,写 ...
- shell map数据结构的实现
前言 Bash默认不支持二维数组,如果我们想实现map 数据结构,可以安装如下的方式来进行构造 预备知识 eval: 它是shell内建命令,用于字符串的解析.它会首先扫描命令行 ...