Как написать REST API на JavaScript за 30 минут

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

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

Начать курс

Введение: 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-коды для

Блоги

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