lazy-mock , ленивый инструмент для создания фиктивных данных бэкэнда.

задняя часть внешний интерфейс JavaScript Vue.js

lazy-mock

  lazy-mockосновывается наkoa2построенный, с использованиемlowdbСохранять данные в файл JSON. Нужна только простая конфигурация для достижения иjson-serverАналогичные функции, но более гибкие, чем json-сервер, более настраиваемые позже и могут полностью имитировать реальную внутреннюю бизнес-логику.

  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/Enslavementsoft/MOTea…

сгенерировать код

убедитесь, прежде чем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 в заголовок запроса.

Токен, полученный перед имитацией входа в систему

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)

разрешение указывает, что текущий пользователь, вошедший в систему, должен иметь какой-либо код разрешения в массиве для доступа к текущему интерфейсу.

Роль указывает, что текущий вошедший в систему пользователь должен иметь какой-либо код роли в массиве для доступа к текущему интерфейсу.

Отношение между разрешением и ролью ИЛИ