Express.js — это популярный фреймворк для разработки веб-приложений на Node.js. Один из ключевых аспектов работы с Express.js — это настройка маршрутов, которые позволяют обрабатывать HTTP-запросы и возвращать соответствующие ответы клиенту.

В этом руководстве мы рассмотрим, как настраивать маршруты в Express.js, начиная с самых простых примеров и заканчивая более сложными сценариями.

Основы маршрутизации

Маршруты в Express.js создаются с помощью метода app.METHOD(), где METHOD — это HTTP-метод (например, GET, POST, PUT, DELETE), а app — это экземпляр вашего приложения Express.

Создание базового маршрута

Для начала создадим простой маршрут, который будет обрабатывать запросы на главную страницу:

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

app.get('/', (req, res) => {
    res.send('Добро пожаловать на главную страницу!');
});

app.listen(3000, () => {
    console.log('Сервер работает на http://localhost:3000');
});

В этом примере мы создали маршрут для GET-запросов на корневой URL /. Когда клиент обращается к этому URL, сервер отправляет ответ с текстом «Добро пожаловать на главную страницу!».

Обработка различных маршрутов

Вы можете создавать маршруты для различных URL и использовать разные HTTP-методы. Например:

app.post('/submit', (req, res) => {
    res.send('Данные успешно отправлены!');
});

app.put('/update/:id', (req, res) => {
    res.send(`Данные с ID ${req.params.id} обновлены!`);
});

app.delete('/delete/:id', (req, res) => {
    res.send(`Данные с ID ${req.params.id} удалены!`);
});

В этом примере мы создали маршруты для обработки POST, PUT и DELETE запросов. Обратите внимание на использование req.params для доступа к параметрам маршрута, например, /:id.

Маршруты с использованием параметров

Маршруты могут содержать параметры, которые позволяют динамически обрабатывать запросы. Например, если вы хотите создать маршрут для получения информации о пользователе по его ID, вы можете сделать так:

app.get('/user/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`Информация о пользователе с ID: ${userId}`);
});

В этом случае, когда клиент делает запрос на /user/123, сервер ответит «Информация о пользователе с ID: 123».

Группировка маршрутов

Для удобства можно группировать маршруты по определенным признакам. Например, вы можете создать префикс для всех маршрутов, связанных с пользователями:

const userRouter = express.Router();

userRouter.get('/:id', (req, res) => {
    res.send(`Информация о пользователе с ID: ${req.params.id}`);
});

userRouter.post('/', (req, res) => {
    res.send('Создан новый пользователь!');
});

app.use('/users', userRouter);

Теперь все маршруты, определенные в userRouter, будут доступными по адресу /users. Это позволяет организовать код и сделать его более читаемым.

Middleware и маршруты

В Express.js можно использовать middleware для обработки запросов перед тем, как они дойдут до маршрутов. Например, можно использовать middleware для проверки аутентификации:

const authMiddleware = (req, res, next) => {
    const isAuthenticated = true; // Здесь должна быть ваша логика аутентификации
    if (isAuthenticated) {
        next(); // Если аутентифицирован, переходим к следующему middleware или маршруту
    } else {
        res.status(401).send('Необходима аутентификация!');
    }
};

app.use(authMiddleware);

В этом примере, перед тем как обработать любой маршрут, будет выполнено middleware authMiddleware, которое проверяет, аутентифицирован ли пользователь.

Заключение

Настройка маршрутов в Express.js — это мощный инструмент для создания веб-приложений. Вы можете обрабатывать различные HTTP-методы, использовать параметры маршрутов, группировать маршруты и применять middleware для более сложной логики обработки запросов.

Для более подробной информации и примеров вы можете ознакомиться с документацией Express.js.