lazy-mock 是基於koa2構建的,使用lowdb持久化數據到JSON文件。只須要簡單的配置就能夠實現和json-server差很少的功能,可是比json-server更加靈活,後期可配置性更強,徹底能夠模擬真實後端業務邏輯。前端
lazy-mock默認包含了jwt實現的登陸與登出,實現了基於RBAC模型的通用權限控制邏輯。具體可查看vue-quasar-admin。vue
git clone https://github.com/wjkang/lazy-mock.git
npm install
npm run start
使用Postman模擬登陸功能git
下面經過模擬圖書的增刪改查 介紹lazy-mock的簡單使用github
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
爲當前項目的根目錄。npm
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/Mockjson
確保以前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 tokenapp
token以前模擬登陸獲取的less
## 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爲或關係