Введение: Почему 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. Это база, на которой строятся все современные веб-приложения.
Что можно улучшить в будущем:
-
<