Как написать REST API на JavaScript за 30 минут

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: Почему REST API на JavaScript — это быстро и просто

Создание собственного REST API — это один из первых шагов к пониманию бэкенд-разработки. Если вы уже знакомы с JavaScript, то написать серверную часть приложения можно буквально за полчаса. В этой статье мы разберем, как написать REST API на JavaScript с использованием Node.js и фреймворка Express. Мы создадим простое API для управления списком задач (To-Do List) с поддержкой стандартных CRUD-операций: создание, чтение, обновление и удаление данных.

Это руководство идеально подойдет для новичков, которые хотят быстро запустить свой первый сервер и понять, как работают запросы, маршруты и middleware. К концу статьи у вас будет рабочий API, который можно протестировать в Postman или браузере.

Шаг 1: Подготовка окружения и установка зависимостей

Прежде чем писать код, убедитесь, что у вас установлен Node.js (версия 16 или выше). Если нет — скачайте его с официального сайта. Для проверки выполните в терминале:

node -v
npm -v

Теперь создайте папку для проекта и инициализируйте его:

mkdir my-api
cd my-api
npm init -y

Установите главную зависимость — фреймворк Express, который значительно упрощает работу с HTTP:

npm install express

Также установим nodemon (опционально) для автоматической перезагрузки сервера при изменениях кода:

npm install --save-dev nodemon

Добавьте скрипт запуска в файл package.json:

"scripts": {
  "start": "node index.js",
  "dev": "nodemon index.js"
}

Шаг 2: Создание базового сервера и первого маршрута

Создайте файл index.js в корне проекта. Начнем с подключения Express и запуска сервера на порту 3000:

const express = require('express');
const app = express();
const PORT = 3000;

// Middleware для парсинга JSON
app.use(express.json());

// Тестовый маршрут
app.get('/', (req, res) => {
  res.send('Привет, мир! API работает.');
});

app.listen(PORT, () => {
  console.log(`Сервер запущен на http://localhost:${PORT}`);
});

Запустите сервер командой npm run dev (если используете nodemon) или node index.js. Откройте браузер и перейдите по адресу http://localhost:3000 — вы должны увидеть сообщение "Привет, мир! API работает."

Поздравляю! Вы только что написали REST API на JavaScript. Теперь добавим реальную логику.

Шаг 3: Реализация CRUD-операций для списка задач

Создадим временное хранилище данных в памяти (массив объектов). В реальном проекте вы бы подключили базу данных, но для 30-минутного урока этого достаточно.

let tasks = [
  { id: 1, title: 'Изучить Express', completed: false },
  { id: 2, title: 'Написать API', completed: true }
];

let nextId = 3;

Теперь реализуем четыре основных маршрута:

GET /tasks — Получить все задачи

app.get('/tasks', (req, res) => {
  res.json(tasks);
});

POST /tasks — Создать новую задачу

app.post('/tasks', (req, res) => {
  const { title } = req.body;
  if (!title) {
    return res.status(400).json({ error: 'Название задачи обязательно' });
  }
  const newTask = {
    id: nextId++,
    title,
    completed: false
  };
  tasks.push(newTask);
  res.status(201).json(newTask);
});

PUT /tasks/:id — Обновить задачу

app.put('/tasks/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const { title, completed } = req.body;
  const task = tasks.find(t => t.id === id);
  if (!task) {
    return res.status(404).json({ error: 'Задача не найдена' });
  }
  if (title !== undefined) task.title = title;
  if (completed !== undefined) task.completed = completed;
  res.json(task);
});

DELETE /tasks/:id — Удалить задачу

app.delete('/tasks/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const index = tasks.findIndex(t => t.id === id);
  if (index === -1) {
    return res.status(404).json({ error: 'Задача не найдена' });
  }
  tasks.splice(index, 1);
  res.status(204).send();
});

Шаг 4: Тестирование API и обработка ошибок

После того как вы написали REST API на JavaScript, его нужно протестировать. Используйте Postman, Insomnia или просто curl в терминале.

Примеры запросов:

  • GET http://localhost:3000/tasks — получить список задач
  • POST http://localhost:3000/tasks с телом {"title": "Новая задача"} — создать задачу
  • PUT http://localhost:3000/tasks/1 с телом {"completed": true} — обновить задачу
  • DELETE http://localhost:3000/tasks/2 — удалить задачу

Добавим простую обработку ошибок для несуществующих маршрутов:

app.use((req, res) => {
  res.status(404).json({ error: 'Маршрут не найден' });
});

Также можно добавить глобальный обработчик ошибок (middleware с четырьмя параметрами):

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Внутренняя ошибка сервера' });
});

Заключение: Что дальше?

Вы только что узнали, как написать REST API на JavaScript за 30 минут. Мы создали полноценный сервер с четырьмя CRUD-маршрутами, научились обрабатывать JSON-запросы и тестировать API. Это база, на которой строятся все современные веб-приложения.

Что можно улучшить в будущем:

    <

Блоги

Рекомендаций по книгам