Введение: 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 вернёт массив без удалённого пользователя.