Для фронтенд-разработчиков javascript играет все более важную роль, он может не только расширять возможности браузера, но и иметь большое значение для веб-сервера (мы можем использовать nodeJS для написания кода на стороне сервера, запуска веб-сервера), поэтому в этой статье будет описано применение javascript на стороне сервера. Я расскажу, как использовать nodeJS для создания фиктивного сервера, чтобы упростить интерфейсные настраиваемые фиктивные запросы данных, улучшить инициативу разработчиков интерфейсов и изучить надежность проекта.
мы узнаем
- Основное использование коа
- Основное использование koa-router
- Использование коа-логгера
- glob поддерживает запросы обхода файлов
- Использование нескольких основных API узла
- Автоматический перезапуск с помощью nodemon
Основные идеи дизайна макета сервера
Чтобы получить доступ к нашему API через отношение сопоставления между путем к каталогу и серверным API, например, когда мы обращаемся к интерфейсу /api/article/122, нам нужно только создать файл 122.json в каталоге статьи API. в каталоге фиктивного периода обслуживания. , данные файла json можно настроить для облегчения отладки переднего плана.
Выполнение
1. Создайте службу узла
const Koa = require('koa');
const app = new Koa();
app.listen(3000)
2. Зарегистрируйте маршрут Мы используем koa-router для реализации функции маршрутизации фонового сервиса и возвращаем прочитанные данные во внешний интерфейс через контекст ctx, предоставляемый koa:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router({prefix: '/api'});
router.get('/name', (ctx, next) => {
ctx.body = {
name: 'xuxiaoxi'
}
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000)
Таким образом, мы можем реализовать базовый фоновый API-сервер, который практически не используется. Когда мы запрашиваем /api/name, он возвращает соответствующие данные на стойку регистрации.Этот шаг является ключевым для нас при реализации фиктивного сервиса. Далее мы специально реализуем обход каталога и автоматическую регистрацию API.
3. Автоматически зарегистрировать API-интерфейс и вернуть данные На этом этапе мы реализуем автоматическую регистрацию службы API.Здесь мы используем сторонний модуль glob для обхода каталога и считываем данные файла API через модуль fs узла и возвращаем его на передний план. Использовать glob очень просто, и заинтересованные друзья могут изучить его самостоятельно, поэтому я не буду вдаваться в подробности. Конкретная реализация выглядит следующим образом:
const Koa = require('koa');
const Router = require('koa-router');
const glob = require("glob");
const { resolve } = require('path');
const fs = require('fs');
const app = new Koa();
const router = new Router({prefix: '/api'});
// 注册路由
glob.sync(resolve('./api', "**/*.json")).forEach((item, i) => {
let apiJsonPath = item && item.split('/api')[1];
let apiPath = apiJsonPath.replace('.json', '');
router.get(apiPath, (ctx, next) => {
try {
let jsonStr = fs.readFileSync(item).toString();
ctx.body = {
data: JSON.parse(jsonStr),
state: 200,
type: 'success' // 自定义响应体
}
}catch(err) {
ctx.throw('服务器错误', 500);
}
});
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000);
- Добавить журнал консоли Мы используем koa-logger для печати журналов узлов на терминале, что удобно для отладки.Хотя это не является предметом этой статьи, тем не менее, это необходимо для понимания интерфейсными практиками, которые хотят заниматься разработкой узлов.
const logger = require('koa-logger')
app.use(logger());
Таким образом, каждый наш запрос будет напечатан в терминале.
- Генерация файла карты маршрута Эта функция не является предметом этой статьи, но она значительно облегчит разработчикам интерфейса отладку запросов, потому что, если путь API очень длинный, нам нужно искать один за другим, но с этим файлом карты нам нужно только скопируйте автоматически сгенерированный путь. Конкретная реализация выглядит следующим образом:
//...
const routerMap = {}; // 存放路由映射
// 注册路由
glob.sync(resolve('./api', "**/*.json")).forEach((item, i) => {
// ...
// 记录路由
routerMap[apiJsonPath] = apiPath;
});
fs.writeFile('./routerMap.json', JSON.stringify(routerMap, null , 4), err => {
if(!err) {
console.log('路由地图生成成功!')
}
});
Базовая структура каталогов
полный код
клонировать адресгитхаб-адрес
Мы приглашаем всех учиться друг у друга и вместе исследовать границы интерфейса.
больше рекомендаций
- Реализация и применение javascript-версии декартова произведения
- Реализация и применение бинарного дерева и бинарного дерева поиска в JavaScript
- Реализация небольшой игры на проигрывателе с помощью JavaScript и C3
- Научу вас использовать 200 строк кода, чтобы написать любовную мини-игру Dou Pin Le H5 (с исходным кодом)
- Изучение и обобщение решений для внешней интеграции на основе экологии react/vue.
- 9012 научит вас, как использовать gulp4 для разработки каркасов проекта.
- Как написать собственную библиотеку js менее чем из 200 строк кода)
- Краткое изложение часто используемых js-функций, позволяющих мгновенно повысить эффективность работы (постоянно обновляется)
- Картинка, чтобы научить вас быстро играть в vue-cli3
- 3 минуты, чтобы научить вас использовать нативный js для реализации компонента предварительного просмотра загрузки файлов с мониторингом прогресса
- 3 минуты, чтобы научить вас использовать нативный js для реализации компонента предварительного просмотра загрузки файлов с мониторингом прогресса
- Использование Angular8 и API карты Baidu для разработки «списка туров»
- js реализация базового алгоритма поиска и тест производительности при 1,7 миллионах данных
- Как сделать интерфейсный код в 60 раз быстрее
- "Серия интерфейсных алгоритмов" Дедупликация массива
- Vue advanced advanced series — играйте с vue и vuex с машинописным текстом
- Три года в авангарде, расскажите о 5 самых стоящих книгах, которые стоит прочитать