浅谈前端mock

站长手记 作者: 2024-08-28 02:35:01
何为mock,我认为mock主要就是通过正常请求在后端接口进度落后的情况下,还能获取到和后端约定数据结构一样的模拟数据的一门技术,以避免后端接口进度滞后影响我们正常的开发。mock可能会涉及到4门技术,分别是服务端技术、随机生成特定格式数据的技术、请求转发、请求拦截。

引言

1. 原理

2. 常用手段分类

2.1 硬刚型

将模拟数据直接写在代码里

2.2 拦截型

mockjs
Mock.mock('/api/news', { name: 'Jack', 'age|10-20': 10 });
Charles、 Fiddler 、postman

2.3 Mock Server

node/express/json-server + mockjs/fakejs
devServer: {
    // proxy: {  //额外起一个服务,然后进行转发
    //   '/api': {
    //     target: 'json-server服务的ip:端口号',
    //     pathRewrite: { '/api': '' }
    //   }
    // }
    before: function(app) {  //直接用devserver这个服务
      app.get('/api/news', function(req, res) {
        res.json({ msg: 'dev-before' })
      })
    }
  }

2.4 Mock 平台

RAP/Easy-Mock

3 具体开发流程举例

在devserver里面配置before

devServer: {
    before: function(app) {
      app.get('www.test/api1/news', function(req, res) { //只对api1进行拦截
        res.json({ mockjs产生的模拟数据 })
      })
      app.get('www.test/api1/price', function(req, res) { //只对api1进行拦截
        res.json({ mockjs产生的模拟数据 })
      })
    }
  }
//在/src/api/index.js里面
const getNews = axios.get(www.test/api1/news)
const getPrice = axios.get(www.test/api1/price)
export {
getNews,getPrice
}
// 由于/api1会被before拦截从而得到mock数据,没有问题
//在/src/api/index.js里面修改/api1为/api
const getNews = axios.get(www.test/api/news)  //此时这个请求不会被拦截,走真实接口,而未开发完的接口请求还是走模拟数据接口

4. 展望

总结

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_69884.html
前端 mock