RunApi

RunApi


前执行脚本和后执行脚本的帮助说明

<h3>执行脚本是什么</h3> <p>执行脚本是一段符合JavaScript语法的代码片段。其中,前执行脚本,会在接口请求前执行。而后执行脚本,则在接口请求后执行。这种脚本通常会被用来对环境变量/请求参数等做一些自定义修改。比如说,我想通过动态地获取到A接口的返回token,设置进变量里,然后B接口则可以直接使用这个新变量值了。 用户使用runapi调试具体某个接口的时候,会在填写地址的输入框下方看到前后执行脚本的入口</p> <h3>语法参考</h3> <ul> <li> <h4>前执行脚本</h4> </li> </ul> <pre><code>runapi.getVar(&amp;quot;name&amp;quot;) //获取当前环境的一个变量 runapi.setVar(&amp;quot;name&amp;quot;,&amp;quot;value&amp;quot;)//设置当前环境的一个变量 runapi.clearVar(&amp;quot;name&amp;quot;)//清理当前环境的一个变量 runapi.getParam(name): 获取请求参数(通用方法,GET请求获取query参数,POST/PUT/DELETE请求获取body参数) runapi.setParam(name, value): 设置请求参数(通用方法,GET请求设置query参数,POST/PUT/DELETE请求设置body参数) runapi.deleteParam(name): 删除请求参数(通用方法,GET请求删除query参数,POST/PUT/DELETE请求删除body参数) runapi.getAllParam(): 获取所有参数列表(通用方法,GET请求返回query参数列表,POST/PUT/DELETE请求返回body参数列表),你可以runapi.alert()出来看看数据结构 runapi.getParamJson() // 获取请求参数为json的json对象 runapi.setParamJson(json) //设置请求参数为json的json对象 runapi.getHeader(&amp;quot;name&amp;quot;) //根据name获取header runapi.setHeader(&amp;quot;name&amp;quot;,&amp;quot;value&amp;quot;) //根据name设置header runapi.alert(&amp;#039;调试信息&amp;#039; ); // 弹窗显示调试信息 runapi.getMethod() // 获取请求方法 runapi.getUrl() // 获取请求url runapi.setUrl(url): 设置请求URL(可用于动态修改请求地址,如根据环境切换API地址) </code></pre> <ul> <li> <h4>后执行脚本</h4> </li> </ul> <pre><code>runapi.getVar(&amp;quot;name&amp;quot;) //获取当前环境的一个变量 runapi.setVar(&amp;quot;name&amp;quot;,&amp;quot;value&amp;quot;)//设置当前环境的一个变量 runapi.clearVar(&amp;quot;name&amp;quot;)//清理当前环境的一个变量 runapi.responseBody //响应体对象 runapi.responseHeader //响应体对象 runapi.status // 响应码 runapi.alert(&amp;#039;调试信息&amp;#039; ); // 后执行脚本还支持断言操作,可配合流程测试功能一起使用 runapi.assert(&amp;#039;status==200&amp;#039;) // 表示响应码为200的时候断言通过 runapi.assert(&amp;#039;responseTime&amp;lt;100&amp;#039;) // 表示响应时间小于100毫秒的时候断言通过 runapi.assert(&amp;quot;bodyIsJson()&amp;quot;) // 响应内容为json格式字符串的时候断言通过 // 关于断言的更多语法和说明,请访问 https://www.showdoc.com.cn/p/4949225ee3575af88b0748ae0e6fc105 </code></pre> <ul> <li> <h4>后执行脚本里的断言</h4> <p>关于断言的更多语法和说明,[可点击这里](<a href="https://www.showdoc.com.cn/p/4949225ee3575af88b0748ae0e6fc105">https://www.showdoc.com.cn/p/4949225ee3575af88b0748ae0e6fc105</a> &quot;可点击这里&quot;)</p> </li> <li> <h4>网络请求方法</h4> </li> </ul> <pre><code>/* runapi.ajax 兼容前端juqey库的ajax方法,你可以查看jquery ajax参数说明教程 , 或者在网络搜索更多。网络上关于jquery ajax的历史资料很丰富。 下面给出一个post表单数据的例子 */ runapi.ajax({ url: &amp;#039;https://www.showdoc.cc/server/api/user/login&amp;#039;, type: &amp;#039;post&amp;#039;, dataType: &amp;#039;json&amp;#039;, data: { name: &amp;quot;xu&amp;quot;, foo: &amp;#039;bar&amp;#039; }, headers: { &amp;#039;Content-Type&amp;#039;: &amp;#039;application/x-www-form-urlencoded&amp;#039; }, 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(&amp;#039;string&amp;#039;).toString() ; var sha256 = runapi.CryptoJS.SHA256(&amp;#039;string&amp;#039;).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(&amp;#039;MMMM Do YYYY, h:mm:ss a&amp;#039;) ; var time2 = runapi.moment().format(&amp;#039;YYYYMMDD&amp;#039;) ; 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(&amp;quot;timestamp&amp;quot;,timestamp) // 将时间戳设置为请求头 runapi.setHeader(&amp;quot;timestamp&amp;quot;,timestamp) // 从请求头获取刚才设置的值 var timeFromHeader = runapi.getHeader(&amp;quot;timestamp&amp;quot;) // 将该数值转化为以秒为单位的时间戳 var timestamp2 = Math.round(timeFromHeader/1000) ; // 将该值设置进请求体参数里 runapi.setParam(&amp;quot;timestamp2&amp;quot;,timestamp2) </code></pre> <ul> <li> <h4>后执行脚本</h4> </li> </ul> <pre><code> //如果接口返回是标准json,比如{&amp;quot;testKey&amp;quot;:&amp;quot;hello&amp;quot;}, // 那么访问该对象的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[&amp;#039;content-type&amp;#039;] // 若响应码为200 if(status == 200 ){ // 把date设置进环境变量 runapi.setVar(&amp;quot;testDate&amp;quot;,date) }else{ // 把ua设置进环境变量 runapi.setVar(&amp;quot;testType&amp;quot;,type) } </code></pre>

页面列表

ITEM_HTML