задний план
Не использовал его в предыдущих проектахmock
Для сервисов подождите, пока бэкенд оставит место для поля интерфейса или фронтенда, но проект новой компании нужно построитьmock
сервис, я хотел поставить старый проектjson-server
Сюда можно переместиться, но я обнаружил, что добавление фиктивного API слишком сложно.mock
Сервис должен быть простым, поэтому я решил написать его сам (я подумал, что было бы неплохо написать файл json...).
упреждающий дизайн
по моемуmock
Чтобы понять сервис, вам нужно только определить URL-адрес в спокойном стиле и вернуть соответствующие данные, а затем просто прочитать его.Пример документации
1. Создатьdb.json
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
2. Старт
$ json-server --watch db.json
3. Доступhttp://localhost:3000/posts/1
{ "id": 1, "title": "json-server", "author": "typicode" }
вау не так простокопаться в себе), затем просто преобразуйте данные в форму маршрутизации
// db.js
module.expors = {
'/posts': require('./data/posts.json'),
'/user/login': require('./data/user/login.json'),
'/user/logout': require('./data/user/logout.json')
}
Структура каталогов
mock
|
└───data
| |
| └───posts.json
| └───user
| |
| └───login.json
| └───logout.json
|
└───db.js
└───server.js // 预期通过 node server.js 执行
практика один
написать server.js
const jsonServer = require('json-server')
const server = jsonServer.create()
const middlewares = jsonServer.defaults()
// Set default middlewares (logger, static, cors and no-cache)
server.use(middlewares)
// 获取db数据
const db = require('./db.js')
// Use router
server.use(jsonServer.router(db))
server.listen(3000, () => {
console.log('JSON Server is running on 3000')
})
Сообщается об ошибке после выполнения node server.js
/ aren't supported, if you want to tweak default routes, see
https://github.com/typicode/json-server/#add-custom-routes
вроде не поддерживаетстиль маршрутизацииизdb
данные, эта попытка будетdb
Измените данные навложение объектоврежим, хотя он недостаточно интуитивно понятен, чтобы увидеть адрес интерфейса, в любом случае это просто файл json
// db.js
module.expors = {
'posts': require('./data/posts.json'),
'user': {
'login': require('./data/user/login.json'),
'logout': require('./data/user/logout.json')
}
}
Теперь работает, откройhttp://localhost:3000/user/login
а как же это пустой объект{}
, журнал показываетGET /user/login 404 4.161 ms - 2
;Открытьhttp://localhost:3000/user
, может отображать данные входа и выхода, похоже, это рассматривается как/user
интерфейс, как возвращает json-сервер/user/login
Данные? Даже если стиль роутинга не поддерживается, даже это нельзя прочитать...
практика два
смjsonServer.rewriter
метод, мы можем переписать его сноваdb.js
а такжеserver.js
// db.js
module.expors = {
'posts': require('./data/posts.json'),
'user_login': require('./data/user/login.json'),
'user_logout': require('./data/user/logout.json')
}
// server.js
... 省略部分代码
// 需要加在 server.use(router) 前
server.use(jsonServer.rewriter({
'/user/login': '/user_login',
'/user/logout': '/user_logout'
}))
// Use router
server.use(jsonServer.router(db))
server.listen(3000, () => {
console.log('JSON Server is running on 3000')
})
Наконец-то это работаетmock
служил, хотя это немного некрасиво, да и сам json-сервер поддерживает только/posts/:id
(выбирается по указанному атрибуту id элемента), не поддерживается/posts/:id/xxx
Этот способ записи (нужно добавить вручнуюjsonServer.rewriter
)
Полный
Когда файлов становится все больше и больше, вручную добавляйтеdb.js
а такжеjsonServer.rewriter
это своего рода проблема, поэтому он должен быть автоматически сгенерирован в соответствии с каталогом файловdb
а такжеjsonServer.rewriter
, чтобы мы добавили апи просто добавьте файл json по соответствующему пути (адрес будет прикреплен в конце кода)
путать
используется как передняя частьmock
Службе, по сути, нужно только решить пробел в данных запроса на получение во время разработки и избежать необходимости изменять совместную отладку, вызванную первым заполнением данных на странице; другой - написать достаточно интуитивно понятный и достаточно простой, я думаю, что json-сервер еще не сделал этого. очень хорошо (Надеюсь, я не понял, как использовать json-сервер), интерфейс маршрутизации нельзя увидеть интуитивно, а API для отдыха не может быть хорошо представлен (необходимо добавитьjsonServer.rewriter
).
Если я напишуmock
услуга, я мог бы использоватьkoa
а такжеkoa-router
, просто напишите интерфейс получения маршрута
// router.js
router.get('/posts', () => require('./data/posts.json'))
router.get('/posts/:id', () => require('./data/posts/id.json'))
router.get('/user/login', () => require('./data/user/login.json'))
router.get('/user/logout', () => require('./data/user/logout.json'))
ps: я знаю, что json-сервер также имеетserver.get
метод, но это, кажется, то же самое, что иdb.json
конфликт файлов
Я напишу json-файл для каждого интерфейса, который по крайней мере выглядит интуитивно понятным и достаточно простым для написания, а моя ручная реализация restful гораздо понятнее, чем неполная поддержка json-server;
Суммировать
Первый раз практикуюсь в сборке json-сервера.Может использование и понимание не правильное.Надеюсь укажете на какие проблемы,ставлюmock
Услуги, инкапсулированные в их собственномvue-cli templateвверх, вы можете пройтиvue init masongzhi/vue-template-webpack my-project
Установить,mock
служба в/mock
под папку.
пс:
Статьи по Теме:Настроить шаблон/веб-пакет vue-cli