Маршрутизатор 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.
Задание
Легко- Перенеси четыре маршрута
/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;
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.