[开源]Nodejs lazy-mock,一个生成后端模拟数据的懒人工具
[开源]Nodejs lazy-mock,一个生成后端模拟数据的懒人工具
lazy-mock
lazy-mock 是基于koa2构建的,使用lowdb持久化数据到 JSON 文件。只需要简单的配置就可以实现和json-server差不多的功能,但是比 json-server 更加灵活,后期可配置性更强,完全可以模拟真实后端业务逻辑。
lazy-mock 默认包含了 jwt 实现的登录与登出,实现了基于 RBAC 模型的通用权限控制逻辑。具体可查看vue-quasar-admin。
Clone
git clone https://github.com/wjkang/lazy-mock.git
Install
npm install
Run
npm run start
使用 Postman 模拟登录功能
Use
下面通过模拟图书的增删改查 介绍 lazy-mock 的简单使用
修改 codeGenerate/config/config.js:
export default {
ApiServer:'http://localhost:3000',
ServerRootPath:'G:/GitHubProject/lazy-mock',
//server
RouteRelativePath:'/src/routes/',
ControllerRelativePath:'/src/controllers/',
ServiceRelativePath:'/src/services/',
ModelRelativePath:'/src/models/',
DBRelativePath:'/src/db/'
}
只需要修改ServerRootPath
为当前项目的根目录。
接着修改 codeGenerate/config/model.js:
var shortid = require('shortid')
var Mock = require('mockjs')
var Random = Mock.Random
//必须包含字段 id
export default {
name: “book”,
Name: “Book”,
properties: [
{
key: “id”,
title: “id”
},
{
key: “name”,
title: “书名”
},
{
key: “author”,
title: “作者”
},
{
key: “press”,
title: “出版社”
}
],
buildMockData: function () {//不需要生成设为 false
let data = []
for (let i = 0; i < 100; i++) {
data.push({
id: shortid.generate(),
name: Random.cword(5, 7),
author: Random.cname(),
press: Random.cword(5, 7)
})
}
return data
}
}
更多生成模拟数据的规则可看https://github.com/nuysoft/Mock
生成代码
确保之前npm run start
的窗口还开着,打开新的命令行窗口,执行npm run code
复制 src/routes/bookApiMap.txt 某一行数据到 Postman 访问
get http://localhost:3000/book/get?id=
get http://localhost:3000/book/paged?pageIndex=&pageSize=&sortBy=&descending=&id=&name=&author=&press=
delete http://localhost:3000/book/del?id=
delete http://localhost:3000/book/batchdel?ids=[]
//不设置 id 则新增,否则为更新
post http://localhost:3000/book/save
{
“id”:"",
“name”:"",
“author”:"",
“press”:"",
}
请求头记得加上 Authorization:Bearer token
token 之前模拟登录获取的
More
修改自动生成的代码格式
直接修改 codeGenerate/serverTemplates 下文件
去掉接口需要授权访问的限制
去掉 scr/app.js 里的.use(jwt({ secret: publicKey }).unless({ path: [/^\/public|\/auth\/login|\/assets/] }))
修改接口返回格式
修改 src/lib/responseTemplate.js
修改路由
修改 src/routes 下文件
添加更多业务逻辑
主要修改 src/services 下文件,具体可参考memuService.js
使用权限控制逻辑
前端参考vue-quasar-admin。实现了页面(菜单),接口,元素级的权限控制。
后端在路由处加上权限控制的中间件,比如
.get('/function/pagedlist', PermissionCheck({ permission: ["function_view"], role: ["test"] }), controllers.function.getFunctionPagedList)
permission 表明当前登录用户必须具备数组里的任意一个权限码,才能访问当前接口。
role 表明当前登录用户必须具备数组里的任意一个角色码,才能访问当前接口
permission 与 role 为或关系
mark
Mark
mark
关于Nodejs的lazy-mock工具,这是一个非常实用的后端模拟数据生成器,它基于koa2构建,并使用lowdb将数据持久化到JSON文件。lazy-mock不仅功能强大,而且配置灵活,能够模拟真实后端业务逻辑。
以下是一个简单的使用示例:
-
安装与启动
你可以通过git clone命令获取lazy-mock的源代码,然后使用npm进行安装和启动:
git clone https://github.com/wjkang/lazy-mock.git cd lazy-mock npm install npm run start
-
配置
在
codeGenerate/config/config.js
中,你可以配置API服务器的地址和项目路径等:export default { ApiServer: 'http://localhost:3000', ServerRootPath: '/path/to/your/project', // 其他配置... }
-
生成模拟数据
通过修改
codeGenerate/config/model.js
,你可以定义模拟数据的结构和生成规则,然后使用npm run code
生成相应的后端代码和数据。 -
使用Postman测试
启动lazy-mock后,你可以使用Postman等工具访问生成的API接口,进行模拟数据的增删改查操作。
lazy-mock还默认包含了jwt实现的登录与登出功能,以及基于RBAC模型的通用权限控制逻辑,非常适合在前后端分离的项目中使用。更多详细信息,请查阅lazy-mock的GitHub页面。