Перейти к содержанию

Router

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
const express = require('express');
const app = express();

app.use('/about', function (request, response) {
    response.send('О сайте');
});

app.use('/products/create', function (request, response) {
    response.send('Добавление товара');
});
app.use('/products/:id', function (request, response) {
    response.send(`Товар ${request.params.id}`);
});
app.use('/products/', function (request, response) {
    response.send('Список товаров');
});

app.use('/', function (request, response) {
    response.send('Главная страница');
});
app.listen(3000);

Здесь у нас есть пять маршрутов, которые обрабатываются различными обработчиками. Но три из этих маршрутов начинаются с /products и условно относятся к некоторому функционалу по работе с товарами (просмотр списка товаров, просмотр одного товара по id и добавление товара). Объект Router позволяет связать подобный функционал в одно целое и упростить управление им. Например, перепишем предыдущий пример с использованием объекта Router:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const express = require('express');
const app = express();

// определяем Router
const productRouter = express.Router();

// определяем маршруты и их обработчики внутри роутера
productRouter.use('/create', function (request, response) {
    response.send('Добавление товара');
});
productRouter.use('/:id', function (request, response) {
    response.send(`Товар ${request.params.id}`);
});
productRouter.use('/', function (request, response) {
    response.send('Список товаров');
});
// сопотавляем роутер с конечной точкой "/products"
app.use('/products', productRouter);

app.use('/about', function (request, response) {
    response.send('О сайте');
});

app.use('/', function (request, response) {
    response.send('Главная страница');
});
app.listen(3000);

Здесь определен объект productRouter, который обрабатывает все запросы по маршруту /products. Это главный маршрут. Однако в рамках этого маршрута может быть подмаршрут / со своим обработчиком, а также подмаршруты /:id и /create, которые также имеют свои обработчики.

4.18.png

4.19.png

Комментарии