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

若邪發表於2018-06-30

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模擬登入功能

image

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
    }
}

複製程式碼

更多生成模擬資料的規則可看github.com/nuysoft/Moc…

生成程式碼

確保之前npm run start的視窗還開著,開啟新的命令列視窗,執行npm run code

image

複製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":"",
 
}
複製程式碼

image

請求頭記得加上Authorization:Bearer token

token之前模擬登入獲取的

image

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為或關係

相關文章