Назад в блог

~ ~7–8 минут

Как написать своё тестовое API на Node.js

10

20.12.2025

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

Вадим Пашаев

Вадим Пашаев

Инженер, веб-разработчик, путешественник

Как написать тестовое API на Node.js | PXSTUDIO
Подключения монетизации сайтов, приложений и Telegram-каналов через Рекламную сеть Яндекса

Реклама. ООО "Яндекс". ИНН: 7736207543. erid: 5jtCeReNx12oajxRXPAHPSg

Если ты когда-нибудь делал фронтенд, 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 — хороший старт. Умение быстро написать своё — следующий уровень.

Хорошего кодинга 😉

Подписаться на рассылку

Получите лучшие новости по веб-разработке и AI

Подписаться на рассылку

Получите лучшие новости по веб-разработке и AI

Оценка проекта

Готовы к реализации вашего проекта?

Vadim Pashaev - Professional Web-Developer

Заполните форму справа, и я лично помогу найти для вас оптимальное решение вашей идеи или задачи.

Есть интересная идея?

И вы очень хотите ее реализовать, пишите нам и получите подробное коммерческое предложение и быструю реализацию