Как написать REST API на JavaScript за 30 минут: практическое руководство

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

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

Начать курс

Введение: REST API за полчаса — это реально

REST API — это основа современного веб-взаимодействия. Будь вы фронтенд-разработчиком, желающим понять бэкенд, или новичком, который хочет быстро создать свой первый сервер, — этот гайд для вас. Мы разберем, как написать полноценный REST API на JavaScript (Node.js) буквально за 30 минут.

Мы используем минимальный стек: Node.js и Express.js — самый популярный фреймворк для создания API. Никакого лишнего кода, только практика. К концу статьи у вас будет работающий сервер с CRUD-операциями (создание, чтение, обновление, удаление).

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

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

node -v
npm -v

Создайте папку проекта и перейдите в неё:

mkdir my-rest-api
cd my-rest-api

Инициализируйте проект и установите Express:

npm init -y
npm install express

Для удобства установим nodemon — он автоматически перезапускает сервер при изменениях в коде:

npm install --save-dev nodemon

Теперь откройте package.json и замените секцию "scripts" на:

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

Отлично! Всё готово к написанию кода.

Шаг 2: Пишем базовый сервер и первую конечную точку

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

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

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

// Простая тестовая точка
app.get('/', (req, res) => {
  res.send('Мой REST API работает!');
});

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

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

npm run dev

Перейдите в браузере по адресу http://localhost:3000 — вы должны увидеть сообщение "Мой REST API работает!".

Добавляем имитацию базы данных

Для простоты мы будем хранить данные в памяти (массив). В реальном проекте вы бы подключили MongoDB или PostgreSQL, но для обучения этого достаточно.

// Имитация базы данных
let users = [
  { id: 1, name: 'Алексей', email: 'alex@example.com' },
  { id: 2, name: 'Мария', email: 'maria@example.com' }
];
let nextId = 3;

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

Теперь создадим полноценные конечные точки для работы с пользователями. Мы реализуем четыре основных HTTP-метода: GET, POST, PUT, DELETE.

GET — получение всех пользователей

// Получить всех пользователей
app.get('/api/users', (req, res) => {
  res.json(users);
});

// Получить пользователя по ID
app.get('/api/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const user = users.find(u => u.id === id);
  
  if (!user) {
    return res.status(404).json({ message: 'Пользователь не найден' });
  }
  
  res.json(user);
});

POST — создание нового пользователя

// Создать пользователя
app.post('/api/users', (req, res) => {
  const { name, email } = req.body;
  
  // Простая валидация
  if (!name || !email) {
    return res.status(400).json({ message: 'Имя и email обязательны' });
  }
  
  const newUser = {
    id: nextId++,
    name,
    email
  };
  
  users.push(newUser);
  res.status(201).json(newUser);
});

PUT — обновление пользователя

// Обновить пользователя
app.put('/api/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const { name, email } = req.body;
  
  const userIndex = users.findIndex(u => u.id === id);
  
  if (userIndex === -1) {
    return res.status(404).json({ message: 'Пользователь не найден' });
  }
  
  users[userIndex] = {
    ...users[userIndex],
    name: name || users[userIndex].name,
    email: email || users[userIndex].email
  };
  
  res.json(users[userIndex]);
});

DELETE — удаление пользователя

// Удалить пользователя
app.delete('/api/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const userIndex = users.findIndex(u => u.id === id);
  
  if (userIndex === -1) {
    return res.status(404).json({ message: 'Пользователь не найден' });
  }
  
  users.splice(userIndex, 1);
  res.status(204).send();
});

Полный код файла index.js теперь должен содержать все эти маршруты. Перезапустите сервер (nodemon сделает это автоматически).

Шаг 4: Тестирование API через Postman или браузер

Для тестирования удобно использовать Postman или curl. Вот несколько примеров запросов:

Проверка GET-запроса

GET http://localhost:3000/api/users

В ответ вы получите JSON-массив с пользователями.

Создание нового пользователя (POST)

В Postman выберите метод POST, URL: http://localhost:3000/api/users, вкладка Body → raw → JSON:

{
  "name": "Иван",
  "email": "ivan@example.com"
}

Ответ должен содержать новый объект с id=3.

Обновление пользователя (PUT)

PUT http://localhost:3000/api/users/1
Body (JSON): {"name": "Алексей Обновленный"}

Удаление пользователя (DELETE)

DELETE http://localhost:3000/api/users/2

После удаления запрос GET /api/users вернёт массив без удалённого пользователя.

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

Блоги

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