Skip to main content
Практика завдань

Що таке Express router і як його використовувати для модульного маршрутизації?

Express Router

express.Router() — це міні-додаток Express, який обробляє лише маршрутизацію та проміжне програмне забезпечення. Він дозволяє розділити ваші маршрути на окремі файли, зберігаючи вашу кодову базу модульною та легкою в обслуговуванні.


Проблема без Router

js
// app.js — все в одному файлі (погано для великих додатків) app.get('/users', ...) app.post('/users', ...) app.get('/users/:id', ...) app.get('/products', ...) app.post('/products', ...) // сотні маршрутів...

Рішення: Express Router

src/ app.js routes/ users.routes.js products.routes.js auth.routes.js controllers/ users.controller.js

Створення Router

js
// routes/users.routes.js const express = require('express'); const router = express.Router(); // Маршрути відносні до точки монтування router.get('/', (req, res) => { res.json({ users: [] }); }); router.get('/:id', (req, res) => { res.json({ id: req.params.id }); }); router.post('/', (req, res) => { res.status(201).json({ created: req.body }); }); router.put('/:id', (req, res) => { res.json({ updated: req.params.id }); }); router.delete('/:id', (req, res) => { res.status(204).send(); }); module.exports = router;

Монтування Router

js
// app.js const express = require('express'); const usersRouter = require('./routes/users.routes'); const productsRouter = require('./routes/products.routes'); const authRouter = require('./routes/auth.routes'); const app = express(); app.use(express.json()); // Монтуємо маршрутизатори за префіксами app.use('/api/v1/users', usersRouter); app.use('/api/v1/products', productsRouter); app.use('/api/v1/auth', authRouter); // GET /api/v1/users → usersRouter GET / // GET /api/v1/users/42 → usersRouter GET /:id // POST /api/v1/users → usersRouter POST / app.listen(3000);

Проміжне програмне забезпечення на рівні маршрутизатора

js
// routes/admin.routes.js const express = require('express'); const router = express.Router(); const { requireAdmin } = require('../middleware/auth'); // Застосувати проміжне програмне забезпечення до ВСІХ маршрутів у цьому маршрутизаторі router.use(requireAdmin); router.get('/users', getAllUsers); router.delete('/users/:id', deleteUser); module.exports = router;

Ланцюгові обробники маршрутів (.route())

js
router.route('/users/:id') .get(getUser) .put(updateUser) .patch(patchUser) .delete(deleteUser); // Чистіше, ніж повторювати router.get, router.put тощо.

Маршрутизатор з шаблоном контролера

js
// controllers/users.controller.js const getUsers = (req, res) => res.json({ users: [] }); const getUser = (req, res) => res.json({ id: req.params.id }); const createUser = (req, res) => res.status(201).json(req.body); module.exports = { getUsers, getUser, createUser }; // routes/users.routes.js const { getUsers, getUser, createUser } = require('../controllers/users.controller'); const router = express.Router(); router.get('/', getUsers); router.get('/:id', getUser); router.post('/', createUser); module.exports = router;

Резюме

Express Router є ключем до масштабованих додатків Express. Кожен маршрутизатор є самостійним модулем для певної області функціонування. Монтуйте маршрутизатори за допомогою app.use(prefix, router), щоб створити чисті, легкі в обслуговуванні ієрархії маршрутів.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань