设为首页 收藏本站
查看: 1667|回复: 0

[经验分享] 搭建Mock Server

[复制链接]

尚未签到

发表于 2017-12-8 08:36:39 | 显示全部楼层 |阅读模式
1.为什么要搭建mock-server?
  为了更好的分工合作,让前端能在不依赖后端环境的情况下进行开发,其中一种手段就是为前端开发者提供一个 web 容器,这个本地环境就是 mock-server。
  目前很多前端 mock 数据的方案的基本流程都是使用 node.js 来模拟 http 请求,配置 router 返回 mock 数据。
  一个比较好的 mock-server 该有的能力:
  1.与线上环境一致的接口地址,每次构建前端代码时不需要修改调用接口的代码
  2.所改即所得,具有热更新的能力,每次增加 /修改 mock 接口时不需要重启 mock 服务,更不用重启前端构建服务
  3.能配合 Webpack
  4.mock 数据可以由工具生成不需要自己手动写
  5.能模拟 POST、GET 请求
  6.简单(包括:文件结构简单、编写代码简单)
2.我们mock server 服务器
  1.就是一个基于Node的 Express web 搭建的一个本地server。
  2.数据mock的思路就是在这个本地server端进行,Promise 发出http请求,通过 router 返回mock数据。
  3.与线上环境一致,前端代码构建和接口服务是分开独立的
  app.listen(3001, () => {
  debug(`The fake API server is listening on ${'3001'.rainbow}.`)
  }) //启动一个服务并监听从 3001 端口进入的所有API连接请求
  在webpack 配置中, 比较简单:
  proxy: {
  '/api/*': {
  target: `http://${host}:3001`,
  secure: false,
  },
  将匹配 ‘/api/*’ 这种格式的API的域名重定向为 http://${host}:3001
  4.具有热更新的能力,每次增加 /修改 mock 接口(入口api/index.js)时自动重启 mock 服务
   nodemon 自动重启的工具 启动 mock server
  5.mock 数据可以由工具生成不需要自己手动写,还能模拟 POST、GET 请求
  用到LowDB,LowDB 基于Lo-Dash 中间件, 基于Node的纯Json文件数据库,LowDB支持 JSON Server 和 JSONPlaceholder.
   dbs[entry] = low(`${entries}/data.json`)
  返回或者创建一个Lo-Dash包裹数组。然后,您可以使用这些方法: where, find, filter, sortBy, groupBy, ...和来自Underscore.db的方法
  目录结构,根据大模块划分了mock数据目录结构,
  每一个模块下,都有个schemas/*.js  Object类型 default 数据定义,然后JSON.stringify(data)转为JSON 字符串,同步写入data.json文件中。用到Faker.js 的一些API。 (mock一些不变的数据)
  每一个模块下,都有routes/*.js , 每个模块都对应创建了 express.Router() 实例,在具体app.get(‘/’, (req, res)) 对应的URL 或 路由 来模拟POST 或者GET 请求 以及PUT和DELETE请求,固定的status code 对应了不同的error。
  6.简单(包括:文件结构简单、编写代码简单)
  如何在src (业务代码) 中调用mock server呢?
  在src 下modules/*.js 中定义Promise 请求
  export const myFun = () => ({
  type: MYFUN,
  promise: (dispatch, getStore, api) => api.get(URL.myFun)
  })
  URL 对应配置了不同环境的url 请求, 生产环境(真实),开发环境 (mock server 路由),测试环境(unit test)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422028-1-1.html 上篇帖子: Windows下libevent C++封装类实现 下篇帖子: windows下的socket网络编程(入门级)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表