前执行脚本和后执行脚本的帮助说明
<h3>执行脚本是什么</h3>
<p>执行脚本是一段符合JavaScript语法的代码片段。其中,前执行脚本,会在接口请求前执行。而后执行脚本,则在接口请求后执行。这种脚本通常会被用来对环境变量/请求参数等做一些自定义修改。比如说,我想通过动态地获取到A接口的返回token,设置进变量里,然后B接口则可以直接使用这个新变量值了。
用户使用runapi调试具体某个接口的时候,会在填写地址的输入框下方看到前后执行脚本的入口</p>
<h3>语法参考</h3>
<ul>
<li>
<h4>前执行脚本</h4>
</li>
</ul>
<pre><code>runapi.getVar("name") //获取当前环境的一个变量
runapi.setVar("name","value")//设置当前环境的一个变量
runapi.clearVar("name")//清理当前环境的一个变量
runapi.getParam("name") // 根据name获取请求表单(放在Body里的)的一个参数
runapi.getAllParam() // 获取所有Body参数。你可以runapi.alert()出来看看数据结构
runapi.setParam("name","value") // 根据name设置请求表单(放在Body里的)的一个参数
runapi.getQuery("name") // 根据name获取Query的一个参数
runapi.getAllQuery() // 获取所有Query参数。你可以runapi.alert()出来看看数据结构
runapi.setQuery("name","value") // 根据name设置Query的一个参数
runapi.getParamJson() // 获取请求参数为json的json对象
runapi.setParamJson(json) //设置请求参数为json的json对象
runapi.getHeader("name") //根据name获取header
runapi.setHeader("name","value") //根据name设置header
runapi.alert('调试信息' ); // 弹窗显示调试信息
runapi.getMethod() // 获取请求方法
runapi.getUrl() // 获取请求url
</code></pre>
<ul>
<li>
<h4>后执行脚本</h4>
</li>
</ul>
<pre><code>runapi.getVar("name") //获取当前环境的一个变量
runapi.setVar("name","value")//设置当前环境的一个变量
runapi.clearVar("name")//清理当前环境的一个变量
runapi.responseBody //响应体对象
runapi.responseHeader //响应体对象
runapi.status // 响应码
runapi.alert('调试信息' );
// 后执行脚本还支持断言操作,可配合流程测试功能一起使用
runapi.assert('status==200') // 表示响应码为200的时候断言通过
runapi.assert('responseTime<100') // 表示响应时间小于100毫秒的时候断言通过
runapi.assert("bodyIsJson()") // 响应内容为json格式字符串的时候断言通过
// 关于断言的更多语法和说明,请访问 https://www.showdoc.com.cn/p/4949225ee3575af88b0748ae0e6fc105
</code></pre>
<ul>
<li>
<h4>后执行脚本里的断言</h4>
<p>关于断言的更多语法和说明,<a href="https://www.showdoc.com.cn/p/4949225ee3575af88b0748ae0e6fc105" title="可点击这里">可点击这里</a></p>
</li>
<li>
<h4>网络请求方法</h4>
</li>
</ul>
<pre><code>/*
runapi.ajax 兼容前端juqey库的ajax方法,你可以查看jquery ajax参数说明教程 ,
或者在网络搜索更多。网络上关于jquery ajax的历史资料很丰富。
下面给出一个post表单数据的例子
*/
runapi.ajax({
url: 'https://www.showdoc.cc/server/api/user/login',
type: 'post',
dataType: 'json',
data: {
name: "xu",
foo: 'bar'
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function(res) {
runapi.alert(res)
},
error: function(e) {
}
});
</code></pre>
<ul>
<li>
<h4>加密库</h4>
</li>
</ul>
<pre><code>// runapi可以引用CryptoJS这个加密库来实现类似md5/SHA等常见加密运算
var md5 = runapi.CryptoJS.MD5('string').toString() ;
var sha256 = runapi.CryptoJS.SHA256('string').toString() ;
runapi.alert(md5)
runapi.alert(sha256)
// 关于CryptoJS还有哪些算法,可以网络搜索之。网上中英文资料都很丰富。
</code></pre>
<ul>
<li>
<h4>时间日期库</h4>
</li>
</ul>
<pre><code>// runapi可以引用MomentJs这个库来简化时间运算
var time1 = runapi.moment().format('MMMM Do YYYY, h:mm:ss a') ;
var time2 = runapi.moment().format('YYYYMMDD') ;
runapi.alert(time1);
runapi.alert(time2);
// 关于MomentJs还有哪些用法,可以网络搜索之。网上中英文资料都很丰富。
</code></pre>
<h3>一些Demo示例</h3>
<ul>
<li>
<h4>前执行脚本</h4>
</li>
</ul>
<pre><code>
// 获取当前以毫秒为单位的时间戳
var timestamp = new Date().getTime();
//将时间戳设置成环境变量(调用setVar方法时候,若环境变量不存在则会自动创建)
runapi.setVar("timestamp",timestamp)
// 将时间戳设置为请求头
runapi.setHeader("timestamp",timestamp)
// 从请求头获取刚才设置的值
var timeFromHeader = runapi.getHeader("timestamp")
// 将该数值转化为以秒为单位的时间戳
var timestamp2 = Math.round(timeFromHeader/1000) ;
// 将该值设置进请求体参数里
runapi.setParam("timestamp2",timestamp2)
</code></pre>
<ul>
<li>
<h4>后执行脚本</h4>
</li>
</ul>
<pre><code>
//如果接口返回是标准json,比如{"testKey":"hello"},
// 那么访问该对象的testKey可以runapi.responseBody.testKey这样
//为了简洁,我们可以把runapi.responseBody赋值到一个叫body的变量,这样就可以body.testKey
var body = runapi.responseBody
// runapi.alert(body.testKey)
//获取响应码和响应头
var status = runapi.status
var header = runapi.responseHeader
//从响应头中获取时间信息
var date =header.date
//从响应头中获取content-type信息
var type =header['content-type']
// 若响应码为200
if(status == 200 ){
// 把date设置进环境变量
runapi.setVar("testDate",date)
}else{
// 把ua设置进环境变量
runapi.setVar("testType",type)
}
</code></pre>