Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
0、Node环境下安装和使用Mock
#安装 npminstallmockjs
//使用Mock varMock=require('mockjs') vardata=Mock.mock({ //属性list的值是一个数组,其中含有1到10个元素 'list|1-10':[{ //属性id是一个自增数,起始值为1,每次增1 'id|+1':1 }] }) //输出结果 console.log(JSON.stringify(data,null,4))
1、拦截ajax请求调用
方法如下
Mock.mock(rurl?,rtype?,template|function(options))
方法说明:
(1)rurl:可选参数。
表示需要拦截的URL,可以是URL字符串或URL正则。例如/\/domain\/list\.json/、'/domian/list.json'。
(2)rtype:可选参数。
表示需要拦截的Ajax请求类型。例如GET、POST、PUT、DELETE等。
(3)template|function:必选参数,只取其中一项。
(4)template表示数据模板,可以是对象或字符串。例如{'data|1-10':[{}]}、'@EMAIL'。
(5)function指向本次请求的Ajax选项集,含有url、type和body三个属性,参见XMLHttpRequest规范。
提示
从1.0开始,Mock.js通过覆盖和模拟原生XMLHttpRequest的行为来拦截Ajax请求,不再依赖于第三方Ajax工具库(例如jQuery、Zepto等)。
2.拦截Ajax请求超时
配置拦截Ajax请求时的行为。支持的配置项有:timeout。
(1)Mock.setup(settings)
(2)settings
必选。
配置项集合。
(3)timeout
可选。
指定被拦截的Ajax请求的响应时间,单位是毫秒。值可以是正整数,例如400,表示400毫秒后才会返回响应内容;也可以是横杠'-'风格的字符串,例如'200-600',表示响应时间介于200和600毫秒之间。默认值是'10-100'。
3.本人理解的拦截
使用同一个方法名,去栏截指定方法。通过call修改this指向,到达拦截。
//实现原理 //定义父类 varmock_ajax=function(str){ this.showName=function(){ console.log(str); } returnthis; }; //定义子类 varjquery_ajax=function(str){ this.showName=function(){ console.log('ajax'); } returnthis; }; jquery_ajax('').showName();//->ajax //改变this指向 mock_ajax.call(jquery_ajax,'111'); //调用 jquery_ajax.showName();