关于前端开发中mock数据的方法

前端开发中需要去调用后端的接口,如果后端还没有ready,为了不block开发进程,前端就需要自行mock数据。
我们常用的方法大概以下两种:

  1. 通过一个线上mock数据平台,如: Easy Mock
  2. 通过本地server。

第一种方法需要联网操作,我是碰到过几次网络链接不上的情况,,也可能是我自己的网络问题。

第二种方法,往往需要我们自己去写各种路由规则,如:

app.get('/api/getuser', (req, res)=>{res.send({...})
})

这里我们可以借助一个npm包 fe-api-mocker,通过定义一个接口规则的js文件,就可以实现对所有路由的处理,同时也支持mockjs规则。

  • 可mock返回的延时时间(delay), 状态码(status),头部(headers),响应数据(data)
  • 内置mockjs,让mock数据更加灵活高效
  • 支持以函数方式返回data

安装fe-api-mocker

$ npm i -D fe-api-mocker

基本使用

1. 定义mock接口,如./mockData.js

默认为 GET 请求,如果是 POST 或者其他请求,请以[method api]方式配置, 如:post /api

/*
* 参数类型
* status    服务器返回状态码, 默认:200
* delay     请求延时,默认:100ms
* headers   返回头header
* data      返回数据, 可以为json,或者函数,函数接收req请求对象,可以获取query,body,或者params
*/
module.exports = {// 请求的方法和api地址。// 默认为 GET 请求。"api/1": {status: 200,// 自定义headerheaders: {'X-Foo': 'bar'},// 请求延时,默认100msdelay: 1000,// 返回数据data: {msg: 'response data'}},// 以函数定义返回数据"api/2": {data(req) {return {role: req.query.username === 'paul' ? 'admin': 'not admin'}}},// 内置mockjs"api/3": {data: {// 定义长度为5~10的list数组'list|5-10': [{// 属性 id 是一个自增数,起始值为 1,每次增 1'id|+1': 1}]}},// 发送POST请求"post api/1": {data: {msg: 'response data'}},// 以函数定义返回数据"post api/2": {data(req) {return {role: req.body.username === 'paul' ? 'admin': 'not admin',name: req.body.username}}},
}

2. 服务器配置

如果使用基于express的server,如vue-cli, webpack-dev-sever, 需要配置devServer.before

module.exports = {devServer: {before(app) {// 假设接口文件是 ./mockData.jsmock(app, path.resolve(__dirname, './mockData.js'));}}
}

如果直接跑 express,则配置如下

const mock = require('fe-api-mocker');
const app = require('express')();
// 略过其他逻辑……
// 假设接口文件是 ./mockData.js
mock(app, path.resolve(__dirname, './mockData.js'));app.listen(3000);

3. 前端请求

// 这里要使用你自己的端口号
fetch('http://localhost:3000/api/2?username=paul').then(d => d.json()).then(d => {console.log(d)})


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部