~ ~7–8 минут
Как написать своё тестовое API на Node.js
10
20.12.2025
Пошагово и без лишней теории: как написать своё тестовое API на Node.js для фронтенда, pet-проектов и прототипов, когда бесплатных API уже недостаточно.


Если ты когда-нибудь делал фронтенд, pet-проект или просто тестировал идею, ты точно искал бесплатные API. И это абсолютно нормально — на старте они сильно выручают.
Но почти всегда наступает момент, когда понимаешь: API вроде есть, но он не совсем такой, как нужен. Поля не те, структура неудобная, данные ведут себя странно, а иногда сервис просто падает или вводит лимиты.
И вот тут возникает логичный вопрос:
а может проще написать своё тестовое API?
Спойлер: да, часто проще. И даже быстрее)
Зачем вообще писать своё тестовое API
Я сейчас не говорю про продакшен-бэкенд, микросервисы и сложную архитектуру. Речь именно про тестовое API — инструмент, который помогает тебе разрабатывать дальше.
Своё API удобно, если:
- ты делаешь фронтенд, а бэкенда ещё нет;
- тестируешь формы, состояния, edge-кейсы;
- собираешь pet-проект;
- делаешь демо для клиента;
- хочешь, чтобы данные выглядели ровно так, как нужно UI.
Бесплатные API очень хороши для старта. Но мы же с тобой профи и нам хочется больше контроля ;)
Что нам понадобится (спойлер: минимум)
И давайте здесь без фанатизма. Для самого простого тестового API достаточно:
- среды Node.js (LTS);
- серверный фреймворк Express (если ты знаешь, что это такое, если не знаешь, можешь почитать здесь);
- любые тестовые данные в формате JSON;
- и компьютера или даже своего VPS.
Обойдемся без базы данных, без Docker, без авторизации. Наша задача — быстро получить рабочий API, а не «сделать правильно на годы вперёд».
Быстро поднимаем проект
Проверяем, что Node.js установлен:
node -v npm -v
Создаём папку проекта:
mkdir test-api cd test-api npm init -y
Ставим Express:
npm install express
Пишем минимальный сервер. Просто в папке проекта создаем файл index.js и пишем туда:
const express = require('express') const app = express() app.use(express.json()) const PORT = 3000
Добавим простые тестовые данные:
const users = [ { id: 1, name: 'Алиса', email: 'alice@mail.ru' }, { id: 2, name: 'Максим', email: 'max@mail.ru' } ]
Для того, чтобы ваш сервер начал отвечать на запросы, необходимо прописать ендпоинты (что такое эндпоинты можно прочитать в этой, супер подробной статье, это своего рода точки входа, когда ты будешь отправлять эти точки входа на сервер, сервер будет понимать, какую функцию вызывать.
Первый эндпоинт - GET
Пришло время написать наш первый эндпоинт, он будет вызывать функцию, которая в ответ будет получать список пользователей из константы users, которую мы написали выше. Конечно вместо заранее определенных данных могут быть и данные полученные из базы данных, но мы же сейчас делаем простой API.
app.get('/users', (req, res) => { res.json(users) })
Вуаля — у нас появилось серверное приложение, которое и есть наше тестовое API. Теперь, чтобы его запустить, необходимо написать:
app.listen(PORT, () => { console.log(`API is running on http://localhost:${PORT}`) })
Так мы заставляем слушать наше приложение запросы из порта PORT от нашего фронтенда или же любого другого приложения. Следующей командой мы можем запросить список пользователей.
GET http://localhost:3000/users
Уррааа! Теперь у тебя уже есть свой собственный тестовый API. И этого уже достаточно, чтобы протестировать функциональность. Но давайте добавим еще один эндпоинт:
Добавим POST-запрос — чтобы было “как в жизни”
Чтобы мы могли данные не только считывать, но и менять добавим второй эндпоинт, в котором мы будем добавлять нового пользователя в список users.
app.post('/users', (req, res) => { const user = { id: Date.now(), ...req.body } users.push(user) res.status(201).json(user) })
Все! Теперь можно:
- отправлять формы;
- проверять валидацию;
- тестировать состояния загрузки и ошибок.
А что с тестовыми данными?
Тут вариантов масса:
- вы можете добавить обычные JSON-массивы;
- генерировать данные вручную;
- подмешивать данные с другими из открытых API;
- добавлять фейковые пользователи и сущности.
Важно не «как красиво», а чтобы фронтенду было удобно. Тестовое API существует для интерфейса, а не наоборот. Для тестового API структура важнее идеальной модели данных.
Используем API на фронтенде
Самый простой пример:
fetch('http://localhost:3000/users') .then(res => res.json()) .then(data => { console.log(data) })
React, Next.js, Vue — разницы нет, даже с обычного html. С точки зрения клиента это обычный backend, и это главное.
Где у такого подхода границы
Важно не переоценивать тестовое API. Рано или поздно ты упрёшься в ограничения:
- нет интерфейса для управления данными;
- нет ролей и прав доступа;
- нет постоянного хранения;
- нет масштабирования.
И это нормально. Тестовое API — временное решение, а не фундамент какой-либо системы.
В итоге
Своё тестовое API — это не «лишняя работа», а способ:
- ускорить разработку;
- избавиться от внешних зависимостей;
- подстроить backend под фронтенд, а не наоборот.
Бесплатные API — хороший старт. Умение быстро написать своё — следующий уровень.
Хорошего кодинга 😉
Взгляните на наш стартап:

Выбирай экскурсии и активности по всему миру
Уже зарегистрировано 0 стран, 0 направлений, 0 экскурсий
Есть интересная идея?
И вы очень хотите ее реализовать, пишите нам и получите подробное коммерческое предложение и быструю реализацию
