Menu
CoddyTech

Маршрутизатор Express

Часть раздела Основы Express путешествия по Node.js на Coddy. Урок 16 из 20.

В server.js теперь находятся страницы, маршруты API и промежуточное ПО, и он продолжает расти.

// routes/books.js
const router = express.Router();
router.get('/', (req, res) => res.json(books));
router.get('/:isbn', (req, res) => res.json(findBook(req.params.isbn)));
export default router;

// server.js
app.use('/api/books', booksRouter);

express.Router() создаёт небольшое приложение с собственными маршрутами, размещёнными в отдельном файле. app.use('/api/books', booksRouter) монтирует его: маршрут / маршрутизатора обрабатывает GET /api/books, а маршрут /:isbn — GET /api/books/9780141439518. Префикс указывается один раз — в app.use. Ошибки, возникшие внутри маршрутизатора, по-прежнему доходят до обработчика ошибок приложения.

В новом файле routes/recipes.js уже есть один маршрут — /tags.

challenge icon

Задание

Легко
  • Перенеси четыре маршрута /api/recipes из server.js в routes/recipes.js, ниже /tags.
  • Подключи маршрутизатор по адресу /api/recipes.

Отправь запросы GET /api/recipes/tags, GET /api/recipes/2 и GET /api/recipes/2/scale?by=lots.

Попробуйте сами

import express from 'express';
import { recipes } from '../data.js';

const router = express.Router();

// Каждый тег — один раз, в алфавитном порядке.
router.get('/tags', (req, res) => {
    const tags = new Set(recipes.flatMap((recipe) => recipe.tags));
    res.json([...tags].sort());
});

// Перенесите маршруты /api/recipes из server.js сюда, под /tags.
// Внутри роутера пути задаются относительно места его подключения.

export default router;
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы Express