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
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
Скопируйте строку данных в 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 в заголовок запроса.
Токен, полученный перед имитацией входа в систему
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)
разрешение указывает, что текущий пользователь, вошедший в систему, должен иметь какой-либо код разрешения в массиве для доступа к текущему интерфейсу.
Роль указывает, что текущий вошедший в систему пользователь должен иметь какой-либо код роли в массиве для доступа к текущему интерфейсу.
Отношение между разрешением и ролью ИЛИ