node+mock模拟接口传递数据实现前后端分离


1、问题:目前公司的开发模式是后端写接口,然后前端写页面,等前端页面写完了再对后端接口,与后端联调实现功能,这就导致跟后端对接接口联调的时候太累了,耦合太紧,交流半天才解决一丢丢问题,前端改的时候后端闲着,后端改的时候前端闲着的,沟通成本太高,效率太低下,在我看来这并不是真正意义上的前后端分离,需要前后端解耦。

2、解决(因公司问题尚未解决):在项目初期前后端一起根据需求编写接口文档,使接口符合逻辑,等接口文档出来后,前后端分离,后端根据接口文档编写后端接口并自己调通,前端则根据接口文档配置模拟数据来写页面实现功能,到最后前后端把各自项目打包放上服务器测试,谁的错谁改。

3、前端实现node+mock模拟接口:

创建一个文件夹并初始化

npm init -y

安装需要用到的依赖

express 创建极简的web框架
npm install express
mockjs 创建出需要的模拟数据
npm install mockjs
body-parser 用于处理post请求中请求体的数据
npm install body-parser

新建一个app.js文件,写入以下代码

// 引入express模块
var express = require('express')
// 处理post提交参数
var bodyParser = require('body-parser')
//引入mock数据
var Mock = require('mockjs')
// 调用express方法
var app = express()
// 路由----> 程序  初始路径
app.get('/', function (req, res) {
    res.send({ message: '服务已成功开启!' })
})
// 处理传输的post数据格式
app.use(bodyParser.json())
app.use(
    bodyParser.urlencoded({
        extended: false, //拓展模式
        limit: 2 * 1024 * 1024 //限制2m
    })
)
//接口
app.post('/data', function (req, res) {
    res.send({
        ...Mock.mock({
            result: {
                'list|10-60': [
                    {
                        id: '@increment(1)',
                        title: '@ctitle',
                        content: '@cparagraph',
                        add_time: '@date(yyyy-MM-dd hh:mm:ss)'
                    }
                ],
                'total|60-120': 120
            },
            code: 200
        })
    })
})

// 监听服务地址
app.listen(8090, function () {
    console.log('开启服务成功!')
})

在终端启动app.js服务

node app.js

在其他地方调用接口(两种方式)

http://127.0.0.1:8090/data
http://localhost:8090/data

就可以看到接口调用成功并返回需要的模拟数据