Menu
CoddyTech

Express Router

CoddyのNode.jsジャーニー「Expressの基礎」セクションの一部。レッスン 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というルートが1つあります。

challenge icon

チャレンジ

簡単
  • /api/recipesの4つのルートを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の基礎のすべてのレッスン