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. 本地缓存Ehcache

    1,什么是Ehcache    Ehcache是纯java的开源缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.它主要面向通用缓存.Java EE和轻量级容器, ...

  2. mybatis简单项目

    1,mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  3. Redis对象——哈希(Hash)

    哈希在很多编程语言中都有着很广泛的应用,而在Redis中也是如此,在redis中,哈希类型是指Redis键值对中的值本身又是一个键值对结构,形如value=[{field1,value1},...{f ...

  4. F - F HDU - 1173(二维化一维-思维)

    F - F HDU - 1173 一个邮递员每次只能从邮局拿走一封信送信.在一个二维的直角坐标系中,邮递员只能朝四个方向移动,正北.正东.正南.正西. 有n个需要收信的地址,现在需要你帮助找到一个地方 ...

  5. Oracle ROWNUM用法

    很多朋友应该跟我一样有个疑问,为什么rownum > 5 的时候会查不到一条数据,用rownum < 5就可以查到数据,明明查询所有的时候rownum有很多啊,小朋友,你是不是有很多问号? ...

  6. Mac电脑之间的文件共享 - 偏门

    文件共享是工作中经常要进行的. Mac用户之间可以通过AirDrop来共享文件.AirDrop要借助无线网络,而很多人都是将Mac做成个人热点供手机等Wifi连接,AirDrop时必须断开热点,不方便 ...

  7. Docker的MySQL镜像, 实行数据,配置信息,日志持久化

    Docker的MySQL8镜像, 实行数据持久化 使用Docker的MySQL8.0.17实例化一个容器之后需要对其进行数据持久化操作, 使用 docker docker run -p 7797:33 ...

  8. Scratch 第2课淘气男孩儿

    素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8

  9. BadMethodCallException : Call to undefined method App\Models\Article::setContainer()

    如果你执行 php artisan db:seed 发生如下错误 说是模型中不存在 静态方法 setContainer()方法,那么你应该检查下你的DatabaseSeeder.php 文件 中的 r ...

  10. 微信小程序H5预览页面框架(二维码不隐藏)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...