前后端分离开发接口定义mock 数据
现在开发的方式基本都采用了前后端分离的技术来实现,初期有页面原型,后端代码没有开发完成,前端工程师就不能开发前端页面,这样前端在初期就不能作业面设计,假数据是写死的不是很灵活。于是有了mock的概念。
mock介绍《图片来自mock官网》 http://mockjs.com/
这里我安利一个国内开源的mock接口定义的官方网站
https://www.easy-mock.com
这是对mock的封装,不需要单独搭建mock环境,直接定义接口按照他的返回方式进行数据返回
缺点:数据是标准的JSON key-value方式出现的 只可以对value可以采用function的方式变化 模拟复杂的对象就很困难。
优点:节省成本,快速入手,采用mock数据格式可以支持Swagger支持restFul风格请求
Lets do it
首先打开 easy-mock的官网输入用户名密码登录,没有用户名密码的会自动创建一个用户登录系统
创建一个个人项目
打开项目创建接口
如下图
具体规则查看文档
示例:
{ data: function({ _req, Mock }) { let needLoadTpl = { type: "danger", text: "该操作需要登陆才能完成,请登陆系统", code: null, errors: [] } let buildStuts = _req.params.buildStuts // 请求参数 《building,builded》其他参数不接受无数据 let token = _req.header.token // 请求头 let body = _req.body // 请求体 let page = body.page let pageSize = body.pageSize let currentPage = body.currentPage if (token) { let havaData = false let data = { id: @increment(100), projectCode: P@date("yyyyMMdd")@string("0123456789",4), //编码 projectName: 公园@cword("一二三四五六七八九十")号@integer(1, 4)# @string("0123456789",3), //项目名称 customerName: @cname, //客户姓名 customerPhone: /^(1[356789][0-9]|14[012356789])[0-9]{8}$/, //手机号 address: @county(true)@projectName, workStatus: } //项目地址 if (buildStuts === building && body.length > 0) { data.workStatus = @integer(0, 3) // 工程状态在建工程 havaData = true } else if (buildStuts === builded && body.length > 0) { havaData = true data.workStatus = 4 //完工工地 } else { havaData = false return params must in [building,builded] your params + JSON.stringify(buildStuts) } if (havaData) { // 设置请求超时 /* Mock.setup({ timeout: 200-600 }) */ return Mock.mock({ content|1-10: [data], page: page ? Number.parseInt(page) : 1, pageSize: pageSize ? Number.parseInt(pageSize) : 10, totalPage: currentPage ? Number.parseInt(currentPage) : 1, totalRows: currentPage ? Number.parseInt(currentPage) * Number.parseInt(pageSize) : 1 * 10, currentPage: currentPage ? Number.parseInt(currentPage) : 1, body: body }) } } else { return Mock.mock(needLoadTpl) } } }