Введение: REST API на JavaScript — быстро и просто
Современная веб-разработка немыслима без API. REST (Representational State Transfer) — самый популярный архитектурный стиль для создания веб-сервисов. Если вы хотите быстро создать бэкенд для своего приложения или научиться основам серверной разработки, Node.js и Express — идеальный выбор.
В этой статье мы за 30 минут напишем полноценное REST API на JavaScript. Вы узнаете, как настроить сервер, организовать маршруты (роутинг), реализовать CRUD-операции (Create, Read, Update, Delete) и протестировать API с помощью Postman. Никакой лишней теории — только практика. Поехали!
1. Подготовка среды и установка зависимостей
Прежде чем писать код, убедитесь, что на вашем компьютере установлен Node.js (версия 14 или выше). Проверить это можно командой:
node -v
npm -v
Создайте новую папку для проекта и инициализируйте package.json:
mkdir my-rest-api
cd my-rest-api
npm init -y
Теперь установим Express — минималистичный и гибкий фреймворк для Node.js. Также установим body-parser для обработки JSON-запросов (в современных версиях Express он встроен, но для наглядности добавим его явно):
npm install express body-parser
Структура проекта будет простой:
app.js— основной файл сервераroutes/— папка с маршрутамиdata/— папка с тестовыми данными (имитация базы данных)
2. Создание базового сервера на Express
Создайте файл app.js и напишите следующий код:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const PORT = 3000;
// Middleware для обработки JSON
app.use(bodyParser.json());
// Простой тестовый маршрут
app.get('/', (req, res) => {
res.send('REST API работает!');
});
// Запуск сервера
app.listen(PORT, () => {
console.log(`Сервер запущен на http://localhost:${PORT}`);
});
Запустите сервер командой node app.js и откройте в браузере http://localhost:3000. Вы должны увидеть сообщение "REST API работает!". Поздравляю, вы только что создали первый веб-сервер на Node.js!
Обратите внимание: body-parser преобразует входящие данные в формат JSON, что необходимо для POST и PUT запросов.
3. Организация роутинга и CRUD-операции
Теперь давайте добавим настоящие данные. Создайте папку data и внутри файл items.js с тестовым массивом:
const items = [
{ id: 1, name: 'Изучить Node.js', completed: false },
{ id: 2, name: 'Написать API', completed: true },
{ id: 3, name: 'Опубликовать статью', completed: false }
];
module.exports = items;
Создайте папку routes и файл items.js внутри неё. Здесь мы опишем все маршруты для работы с задачами (to-do list):
const express = require('express');
const router = express.Router();
let items = require('../data/items');
// GET /api/items — получить все элементы
router.get('/', (req, res) => {
res.json(items);
});
// GET /api/items/:id — получить элемент по ID
router.get('/:id', (req, res) => {
const id = parseInt(req.params.id);
const item = items.find(i => i.id === id);
if (!item) return res.status(404).json({ message: 'Элемент не найден' });
res.json(item);
});
// POST /api/items — создать новый элемент
router.post('/', (req, res) => {
const newItem = {
id: items.length + 1,
name: req.body.name,
completed: req.body.completed || false
};
items.push(newItem);
res.status(201).json(newItem);
});
// PUT /api/items/:id — обновить элемент
router.put('/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(i => i.id === id);
if (index === -1) return res.status(404).json({ message: 'Элемент не найден' });
items[index] = { ...items[index], ...req.body };
res.json(items[index]);
});
// DELETE /api/items/:id — удалить элемент
router.delete('/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(i => i.id === id);
if (index === -1) return res.status(404).json({ message: 'Элемент не найден' });
const deletedItem = items.splice(index, 1);
res.json({ message: 'Элемент удалён', item: deletedItem[0] });
});
module.exports = router;
Теперь подключите роутер в app.js, добавив строку перед app.listen:
const itemsRouter = require('./routes/items');
app.use('/api/items', itemsRouter);
Перезапустите сервер. Теперь ваше API поддерживает все CRUD-операции по адресу http://localhost:3000/api/items.
4. Тестирование API в Postman
Для проверки работы используйте Postman или любой другой REST-клиент. Вот несколько тестовых запросов:
- GET
http://localhost:3000/api/items— вернёт весь список задач. - GET
http://localhost:3000/api/items/1— вернёт задачу с ID=1. - POST
http://localhost:3000/api/itemsс телом{ "name": "Новая задача" }— создаст новую запись. - PUT
http://localhost:3000/api/items/2с телом{ "completed": true }— обновит статус задачи. - DELETE
http://localhost:3000/api/items/3— удалит задачу.
Обратите внимание на статусы ответов: 200 (OK), 201 (Created), 404 (Not Found). Это стандартные HTTP-коды для