1. 程式人生 > >lazy-mock ,一個生成後端模擬數據的懶人工具

lazy-mock ,一個生成後端模擬數據的懶人工具

build 一行 根目錄 res per for bat 之前 asa

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訪問

txt get http://localhost:3000/book/get?id=
txt get http://localhost:3000/book/paged?pageIndex=&pageSize=&sortBy=&descending=&id=&name=&author=&press=
txt delete http://localhost:3000/book/del?id=
txt delete http://localhost:3000/book/batchdel?ids=[]
```txt
//不設置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為或關系

lazy-mock ,一個生成後端模擬數據的懶人工具