工做中,有時候前端的不少工做須要後端的支持,可是可能後端的接口尚未開發完,或者有些時候在聯調階段,修復某個 bug 的時候,環境掛了。。。 那麼這個時候,咱們的不少工做沒法順利的進行下去。因而萌生了搭建本地服務器的想法。前端
官網提供詳細的文檔和說明,上手比較快,可是對於保密性比較強的公司,建議捨棄這種方式。node
技術選型git
let projectOne = {
'getList': {
code: '0',
data: [{
key: '1',
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
tags: ['nice', 'developer']
}, {
key: '2',
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
tags: ['loser']
}, {
key: '3',
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
tags: ['cool', 'teacher']
}]
},
getInfo: {
error_no: 0,
errMessage: '',
data: {
info: {
'name': 'BeJson',
'url': 'http://www.bejson.com',
'page': 88,
'isNonProfit': true,
'address': {
'street': '科技園路.',
'city': '江蘇蘇州',
'country': '中國'
},
'links': [{
'name': 'Google',
'url': 'http://www.google.com'
},
{
'name': 'Baidu',
'url': 'http://www.baidu.com'
},
{
'name': 'SoSo',
'url': 'http://www.SoSo.com'
}
]
}
}
}
}
module.exports = {
...projectOne
}
複製代碼
api/index (支持 es5 和 es6共存寫法)es6
const test = require('./test/test.js')
import projectOne from './project/projectOne'
module.exports = {
...test,
...projectOne
}
複製代碼
// var Mock = require('mockjs')
import Mock from 'mockjs'
var api = require('../api')
module.exports = {
...api,
getComment: Mock.mock({
'error': 0,
'message': 'success',
'result|40': [{
'author': '@name',
'comment': '@cparagraph',
'date': '@datetime'
}]
}),
addComment: Mock.mock({
'error': 0,
'message': 'success',
'result|5': [{
'comment': '@cparagraph'
}]
}),
// post/1 和post/2 返回不一樣的內容
'posts': [{
'id': 1,
'title': 'json-server',
'author': 'typicode'
},
{
'id': 2,
'title': 'json-server',
'author': 'typicode'
}
],
'comments': [{
'id': 1,
'body': 'some comment',
'postId': 1
}],
'profile': {
'name': 'typicode'
}
}
複製代碼
import test from './test/test'
const projectOne = require('./project/projectOne')
module.exports = {
...test,
...projectOne
}
複製代碼
router/project/projectOnegithub
module.exports = {
'/localMock/*': '/$1',
'/localMock/getList': '/getList',
'/localMock/getInfo': '/getInfo',
/* 若是沒有'/localMock/*': '/$1', 下面接口鏈接沒法訪問到 */
'/localMock/getInfo?123456+.2345.3434': '/getInfo'
}
複製代碼
localMock項目地址express
git clone https://github.com/majunchang/localMock.git
cd localMock
npm i
npm dev | npm run start | npm run mock (均可以啓動)
npm run gulp ( 啓動而且能夠熱更新 )
複製代碼
在查詢了關於jsonserver 的 router 配置方式之後,總感受對於動態執行參數的接口支持的不太好,因而就有了 nodemock(什麼分頁,什麼查詢等,處理起來就是一把梭! 複製粘貼 就是剛!)npm
api/projectOnejson
import Mock from 'mockjs'
let projectOne = {
getme: {
name: 'xiaohong',
age: 21,
gender: '男',
xuexi: 'cha11'
},
getshe: Mock.mock({
'error': 0,
'message': 'success',
'result|1': [{
'author': '@name',
'comment': '@cparagraph',
'date': '@datetime'
}]
}),
liyitong: Mock.mock({
'error': 0,
'message': 'success',
'result|3': [{
'author': '@name',
'comment': '@cparagraph',
'date': '@datetime'
}]
})
}
export default projectOne
複製代碼
controller/project.jsgulp
import Mock from 'mockjs'
export function test(req, res) {
var arr = Mock.mock({
'error': 0,
'message': 'success',
'result|10': [{
'author': '@name',
'comment': '@cparagraph',
'date': '@datetime'
}]
})
res.json({
arr
})
}
export function geturl(req, res) {
// 對於接口中的 get 參數 咱們使用 query 獲取便可
const {
num
} = req.query
res.json({
name: 111,
age: 11,
message: req.originalUrl,
num: `get 請求中的接口 num 爲${num}`,
})
}
export function postUrl(req, res) {
// 針對普通的 post 請求 若是是表單格式的須要單獨配置一下
res.json({
name: `post 請求的接口中,post參數爲${req.body}`,
age: 11,
message: req.originalUrl,
})
}
複製代碼
這個項目,沒有預覽全部接口的功能。感興趣的讀者能夠本身添加(當訪問指定連接時,獲取router 中的信息 進行展現出來,解決方法不惟一,能夠查文檔 本身添加)。後端
git clone https://github.com/majunchang/node-mock
cd node-mock
npm i
npm run dev
複製代碼