使用 imitator 实现前后端分离开发中的数据模拟与静态资源映射
imitator
一个简单易用的 nodejs 服务器, 主要用于模拟 HTTP 接口数据, 请求代理与转发 。
使用imitator,可以解决前后端分离开发中的痛点之一:数据模拟,也可以作为代理服务器与静态资源服务器使用。
为什么会有 imitator?
前后端开发协作的过程中,为了不依赖于后端环境,我们常常会和后端童鞋定好接口,然后采用前后端分离的开发模式。
但是这样的模式,需要前端自己来实现接口数据的模拟。通常使用 nginx 可以满足我们绝大部分场景的需求了。
但是,nginx 的配置文件相对前端同学来说还是不够友好,而且有些个性的接口格式无法满足。
imitator 使用 nodejs 并基于 express.js 实现, 配置文件相当简单, 而且易于订制,前端同学使用起来非常顺手。
快速上手
安装——首先你要先安装 nodejs 和 npm, 然后全局安装imitator。
npm install imitator -g
编写配置文件——在你的用户目录(比如我的是/User/hanan)下新建一个名为 Imitatorfile.js 的文件(这是 imitator 的默认配置文件), 内容如下。
module.exports = function(imitator) {// 返回一个jsonimitator('/json', {name: 'hello world'}); }
启动服务——命令行输入以下命令,启动 imitator server.
imitator
浏览器访问 127.0.0.1:8888/json , 将会看到:
{"name":"hello world"}
命令行参数
imitator 命令接受2参数:
-p 设置 imitator server 的端口号,默认是8888。
-f 设置配置文件的路径,支持相对路径和绝对路径,默认为:用户目录/Imitatorfile.js 。
下面的命令将使用 9000 端口, /home/myconfig.js 这个文件作为配置文件来启动 imitator server 。
imitator -p 9000 -f /home/myconfig.js
配置文件
imitator 的配置文件是其实就是一个 nodejs 模块, module.exports 是一个函数,接受一个参数:imitator 。 通过调用 imitator(option) 来设置一条规则。
其中 option 是规则的参数对象。如:
module.exports = function(imitator) {imitator({url: '/json', // 匹配的urlresult: {name: 'json test'} // 返回的内容});
}
如上,当请求地址匹配到 /json 这个路径的时候,就会返回 {name: 'json test'} 的json字符串。
当 option 中只包含 url,result 两个参数时,可以简写成 imitator(url, result) 的形式,上面的例子可以写成:
module.exports = function(imitator) {imitator('/json', {name: 'json test'});
}
规则参数(option)
配置文件中可以通过 imitator(option) 来制定一条规则,其中参数对象包含以下属性:
option.url
必填,设置请求的匹配模式,支持正则。如:
module.exports = function(imitator) {imitator({url: '/json',……});imitator({url: /\/\d{1,3}/, // 支持正则……});
}
option.result
必填,设置请求的返回内容,如果是一个 object 或者 array,将会被 JSON.stringify 后返回;如果是一个 function,将会接受 req 和 res 两个参数执行,可用于实现一些个性化的返回内容。如:
module.exports = function(imitator) {imitator({……result: 'my result', //普通字符串});imitator({……result: {name: 'json test'}, //json});imitator({……result: function (req, res) { // 自定义内容if (req.param.name === 'hanan') {res.send('中年痴呆症患者');}else {res.send('i do not know .');}},});
}
option.type
设置通过 mime.lookup() 转化的 Content-Type HTTP header。如:
module.exports = function(imitator) {imitator({……type: 'json', ==> 'application/json'……});imitator({……type: 'html', ==> 'text/html'……});}
option.headers
设置 HTTP header。如:
module.exports = function(imitator) {imitator({……headers: {myheadername: 'myheader value'}……});}
option.cookies
设置 cookie,如:
module.exports = function(imitator) {imitator({……cookies: [{name: 'myname', value: 'hanan', maxAge: 900000, httpOnly: true}]……});}
option.timeout
设置请求响应的延时时间,单位为毫秒,如:
module.exports = function(imitator) {imitator({……timeout: 1000……});}
HTTP代理
通过 imitator.base() 可以将规则之外的请求,转发到其他的服务器上。这样可以在实现接口模拟的同时,使用其他服务器的返回内容。如:
module.exports = function(imitator) {// 这里是各种规则========imitator(……);imitator(……);imitator(……);// 没有命中规则的请求, 转发到192.168.8.8:9000下imitator.base('http://192.168.8.8:9000');
}
静态目录
通过 imitator.static(url, path) 可以设置静态文件目录。 url 为匹配的请求地址,支持正则;path 为静态文件的目录,路径相对于配置文件。如:
module.exports = function(imitator) {imitator.static('static', './public');
}
读取文件内容
通过 imitator.file(filePath) 可以读取文件内容,filePath是文件路径,相对于配置文件。如:
module.exports = function(imitator) {// 当请求匹配到 /file 时 ,返回文件 ./myfile.txt 的内容imitator('/file', imitator.file('./myfile.txt'));
}
配置文件(Imitatorfile.js)参考
详见:https://github.com/hanan198501/imitator/blob/master/test/Imitatorfile....
使用 imitator 实现前后端分离开发中的数据模拟与静态资源映射相关推荐
- SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法)
SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法) 问题背景 问题解决 为什么说这是一个弱智问题,因为这多是编写代码不仔细造成的. 问题背景 当当后台API发布的接口与 ...
- 前后端分离项目token怎么验证_微信端前后端分离开发中token验证和数据的获取...
微信端前后分离开发中,授权认证,获取token和openid是必不可少的一步. 我们的思路是,每次调用接口前,判断cookie里面是否有token和openid,没有的话判断url参数中是否存在,没有 ...
- WEB前后端分离开发中的验证与安全问题
登录验证以及安全问题: 1.请求接口全部用post方式,在后端判断请求方式是否为post 2.登录密码等敏感信息要加密后传输,如用RSA(支付宝里可下载公私钥生成工具),客户端公钥加密,传到服务器后 ...
- 前后端分离,如何使用Ucloud当作静态资源服务器
以下以上传图片到ucloud 题记:当app或者前端在执行上传图片到ucloud服务器的时候,需要先来java服务器端接口做一次鉴权,获得许可,然后就可以上传图片到uclould了. 1.首先要在po ...
- php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...
php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题. 步骤如下: 1.前端ajax发送请求时,要设置一个自定义header头.代码如下: $.ajax({ url:&quo ...
- SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装
SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装 文章目录 SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装 前后端分离开发中的异常处理 统一结果封 ...
- springboot flask php,使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发(二)
使用Vue完成前后端分离开发(二) Bravery never goes out of fashion. 勇敢永远不过时. 前面简单说了一下 Vue 项目的搭建和项目的大致页面,这里讲一下 Djang ...
- 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)
利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...
- 前后端分离开发模式下后端质量的保证 —— 单元测试
概述 在今天, 前后端分离已经是首选的一个开发模式.这对于后端团队来说其实是一个好消息,减轻任务并且更专注.在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验.当然单元测试并非在前后端分 ...
最新文章
- 开源实时日志分析ELK
- .net托管环境下struct实例字段的内存布局(Layout)和大小(Size)
- 线性筛素数(欧拉筛)
- linux进去网卡,Linux上使用socket进行网卡抓包
- Navicat导入TXT到数据库
- Python+Opencv实现无参数、全自动的Canny算法
- 26 SD配置-主数据-信用管理-指定信用控制区域及信用部分
- SpringCloud项目总结
- mysql两表查询单个_对两个表进行单个MySQL选择查询是可能的吗?
- 电子商务新模式--4B
- Python unittest基本框架组成(1)
- 矩阵拼接_numpy 矩阵拼接
- 计算机毕业设计之java+ssm的图书管理系统的设计与实现论文
- matlab矩阵转置函数
- 1、Linux软件源配置操作
- 常用心理学实验刺激呈现软件介绍
- Flutter集成与打包iOS应用
- BZOJ_4199_[Noi2015]品酒大会_后缀自动机
- linux的OOM killer
- 计算机桌面变蓝屏,电脑进入桌面蓝屏解决方法