Как написать REST API на JavaScript за 30 минут: для начинающих

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

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

Начать курс

Введение: REST API — это просто

REST API (Representational State Transfer) — это "язык", на котором общаются разные программы в интернете. Если вы хотите, чтобы ваше веб-приложение отдавало данные другому приложению (например, мобильному клиенту или фронтенду на React), вам нужно API. И сегодня мы напишем его на JavaScript (Node.js) с нуля всего за 30 минут.

Мы будем использовать самую популярную библиотеку — Express. Она проста, гибка и идеально подходит для начинающих. К концу статьи у вас будет рабочий сервер с четырьмя основными CRUD-операциями (создание, чтение, обновление, удаление). Поехали!

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

Прежде чем писать код, убедитесь, что у вас установлен Node.js. Проверить это можно в терминале:

node -v
npm -v

Если версии отображаются — всё готово. Если нет, скачайте Node.js с официального сайта.

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

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

Файл package.json создан. Устанавливаем Express и библиотеку для работы с UUID (для генерации уникальных ID):

npm install express uuid

Готово. Создайте файл index.js — это будет главный файл нашего сервера.

Шаг 2: Создаём простой сервер на Express

Откройте index.js и напишите первую версию сервера:

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

// Парсинг JSON из тела запроса
app.use(express.json());

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

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

Запустите сервер командой:

node index.js

Откройте браузер и перейдите по адресу http://localhost:3000. Если видите приветственное сообщение — всё работает!

Разберём код: express.json() — это middleware, который автоматически преобразует JSON из запроса в объект JavaScript. Это нужно для POST и PUT запросов.

Шаг 3: Добавляем данные и CRUD-маршруты

Теперь самое интересное — создадим массив с данными (в реальном проекте вы бы использовали базу данных, но для обучения массив подойдёт). Это будет список книг.

const { v4: uuidv4 } = require('uuid');

// Имитация базы данных
let books = [];

// Создать книгу (POST)
app.post('/api/books', (req, res) => {
    const { title, author } = req.body;
    if (!title || !author) {
        return res.status(400).json({ error: 'Нужно указать title и author' });
    }
    const newBook = {
        id: uuidv4(),
        title,
        author
    };
    books.push(newBook);
    res.status(201).json(newBook);
});

// Получить все книги (GET)
app.get('/api/books', (req, res) => {
    res.json(books);
});

// Получить одну книгу по ID (GET)
app.get('/api/books/:id', (req, res) => {
    const book = books.find(b => b.id === req.params.id);
    if (!book) {
        return res.status(404).json({ error: 'Книга не найдена' });
    }
    res.json(book);
});

// Обновить книгу (PUT)
app.put('/api/books/:id', (req, res) => {
    const book = books.find(b => b.id === req.params.id);
    if (!book) {
        return res.status(404).json({ error: 'Книга не найдена' });
    }
    const { title, author } = req.body;
    if (title) book.title = title;
    if (author) book.author = author;
    res.json(book);
});

// Удалить книгу (DELETE)
app.delete('/api/books/:id', (req, res) => {
    const index = books.findIndex(b => b.id === req.params.id);
    if (index === -1) {
        return res.status(404).json({ error: 'Книга не найдена' });
    }
    books.splice(index, 1);
    res.status(204).send(); // 204 - нет содержимого
});

Теперь у нас есть полноценное REST API. Протестируем его с помощью cURL или Postman.

Пример добавления книги через cURL:

curl -X POST http://localhost:3000/api/books \
-H "Content-Type: application/json" \
-d '{"title":"Война и мир","author":"Лев Толстой"}'

Ответ должен содержать созданную книгу с уникальным ID.

Шаг 4: Тестируем и улучшаем API

Чтобы убедиться, что всё работает, давайте пройдёмся по всем маршрутам:

  • GET /api/books — вернёт массив всех книг.
  • GET /api/books/:id — вернёт одну книгу (замените :id на реальный ID).
  • PUT /api/books/:id — обновит данные книги (отправьте JSON с новыми полями).
  • DELETE /api/books/:id — удалит книгу (вернёт статус 204).

Если какой-то маршрут возвращает ошибку 404, проверьте ID — они чувствительны к регистру.

Теперь несколько советов для улучшения проекта:

  • Добавьте валидацию: проверяйте типы данных (например, что title — строка).
  • Разделите код: вынесите маршруты в отдельный файл routes/books.js.
  • Добавьте логирование: используйте библиотеку morgan для отслеживания запросов.
  • Подключите настоящую базу данных: например, MongoDB через Mongoose или SQLite через Sequelize.

Заключение

Поздравляю! Вы только что написали своё первое REST API на JavaScript (Node.js) за 30 минут. Вы освоили:

  • Установку и настройку Express.
  • Создание HTTP-маршрутов (GET, POST, PUT, DELETE).
  • Работу с JSON-данными.
  • Базовую обработку ошиб

Блоги

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