Молниеносный mock API сервер без зависимостей, работающий на основе файловой системы, с умным движком генерации данных.
Nullmock читает ваши .json файлы, перехватывает динамические URL-маршруты, такие как /api/users/[id], понимает параметры запроса (query parameters) и магическим образом генерирует огромные объемы фейковых данных с использованием встроенных словарей или движка умного угадывания типов данных.
- Без зависимостей: Чистый Node.js. Никаких
express,fakerили раздутых папокnode_modules. - Маршрутизация по файловой системе: Папки определяют ваши API-маршруты (например,
mocks/api/users/[id]/GET.json). - Умный движок данных: Автоматически угадывает типы данных по ключам JSON (например, генерирует реальные даты для
created_at, email дляuser_email). - Встроенные словари (Locales): Используйте теги, такие как
{{firstName:ru}}или{{city:ru}}, чтобы генерировать реалистичные локализованные данные. - Директива Repeat: Сгенерируйте 100 пользователей за миллисекунду, просто добавив
"_repeat": 100в ваш шаблон. - Режим библиотеки: Импортируйте движок напрямую в ваши Node.js скрипты без запуска сервера.
Выполните следующую команду в корневой директории вашего проекта для создания структуры:
npx nullmock initЭта команда создаст следующую структуру:
mocks/: Главная папка для ваших API эндпоинтов.mocks/locales/: Поместите сюда ваши собственные.jsonсловари.mocks/_examples/: Содержит 6 Золотых API Шаблонов для мгновенного старта.
(Чтобы пропустить создание примеров, выполните: npx nullmock init --no-examples)
Вариант 1: Быстрый старт
npx nullmockВариант 2: NPM Скрипты (Рекомендуется)
Добавьте это в ваш package.json:
"scripts": {
"mock": "nullmock"
}Затем запустите: npm run mock
При выполнении команды init, Nullmock предоставляет 6 стандартных для индустрии шаблонов. Вы можете скопировать и вставить их в свои папки API:
1_basic_list.json: Простой, плоский массив элементов (удобно для категорий, стран).2_paginated_list.json: Стандартная структура пагинации (current_page, data, total).3_infinite_scroll.json: Структура пагинации на основе курсора (has_more, next_cursor).4_single_resource.json: Детальный объект для одного элемента (например,/users/60).5_dashboard_overview.json: Гибридная структура, содержащая как сводные метрики, так и массивы недавней активности.6_lazy_auto_mock.json: Шаблон без конфигурации. Просто напишите ключи (например,"user_email": ""), оставьте значения пустыми, и умный движок Nullmock угадает и заполнит их!
Nullmock поставляется со встроенными локализованными данными для быстрого прототипирования. Используйте синтаксис {{category:lang}} в ваших JSON файлах.
Поддерживаемые встроенные языки:
en(Английский)tr(Турецкий)az(Азербайджанский)ru(Русский)ka(Грузинский)
Пример использования:
{
"name": "{{firstName:ru}} {{lastName:ru}}",
"location": "{{city:ru}}"
}Пользовательские словари:
Хотите использовать свои собственные данные? Просто создайте файл ru.json или my_data.json внутри папки mocks/locales/. Nullmock автоматически отдаст приоритет словарям вашего проекта над встроенными.
Легко тестируйте состояния загрузки (loading) и обработку ошибок на вашем фронтенде. Вы можете симулировать задержку сети и HTTP статус-коды двумя способами:
1. Через URL-параметры (Динамический тест) Нет необходимости менять ваши mock-файлы! Просто добавьте параметры к вашему fetch URL:
- Тест состояния загрузки:
/api/users?_delay=2000(Ждет 2 секунды) - Тест неавторизованного доступа:
/api/users?_status=401 - Комбинируйте их:
/api/users?_delay=1000&_status=500
2. Через JSON-конфигурацию (Постоянно)
Добавьте ключи _delay и _status прямо в ваш JSON-файл. Nullmock применит их и удалит перед отправкой ответа клиенту:
{
"_status": 404,
"_delay": 1500,
"error": "Пользователь не найден"
}Нужны случайные числа в определенном диапазоне для цен, возраста или баланса кошелька? Просто используйте тег {{number:min-max}} в любом месте ваших строковых значений!
{
"price": "{{number:10-500}}",
"age": "{{number:18-65}}"
}Вам не обязательно использовать Nullmock как сервер. Вы можете импортировать его мощный движок генерации напрямую в ваши бекенд-скрипты, тесты или сидеры!
const { deepScanAndRepeat } = require('nullmock');
const myTemplate = {
"_repeat": 3,
"id": "{{id}}",
"email": "", // Умное угадывание
"name": "{{firstName:ru}}"
};
// Генерируйте данные на лету! (Передаем { id: 10 } как динамический параметр)
const fakeData = deepScanAndRepeat(myTemplate, { id: 10 });
console.log(fakeData);Ваш вклад всегда приветствуется! Пожалуйста, создавайте свои Pull Request'ы в ветку develop.
MIT © modoldern