Express ルーティングの違い
Node.js の Express フレームワークにおいて、express.Router
と app.get
はどちらもルーティングに関する機能を提供しますが、その役割と使い方は異なります。
app.get
- グローバルなスコープ
app.get
で定義されたルートは、アプリケーション全体に対して有効です。 - シンプルなルーティング
小規模なアプリケーションや簡単なルート構成の場合に適しています。 - 直接的なルート定義
app.get
を直接使用することで、特定の HTTP GET リクエストに対する処理を定義できます。
例
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});
express.Router
- ネストされたルート
より複雑なルート構造を構築できます。 - 再利用可能なルート
作成したルーターを複数のアプリケーションやミドルウェアで再利用できます。 - モジュラーなルーティング
express.Router
を使用すると、ルートをモジュール化して管理しやすくなります。
const express = require('express');
const app = express();
const userRouter = express.Router();
userRouter.get('/profile', (req, res) => {
res.send('User Profile');
});
userRouter.get('/settings', (req, res) => {
res.send('User Settings');
});
app.use('/users', userRouter);
- express.Router
モジュラーなルーティング、再利用性、ネストされたルートの構築に適しています。 - app.get
シンプルなルート定義に適しています。
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});
const express = require('express');
const app = express();
const userRouter = express.Router();
userRouter.get('/profile', (req, res) => {
res.send('User Profile');
});
userRouter.get('/settings', (req, res) => {
res.send('User Settings');
});
app.use('/users', userRouter);
Express ルーティングの違い
Express では、さまざまな方法でルーティングを定義できます。
基本的なルーティング
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.post('/login', (req, res) => {
// ログイン処理
});
パラメータ付きルーティング
app.get('/users/:userId', (req, res) => {
const userId = req.params.userId;
// ユーザー情報を取得して表示
});
ワイルドカードルーティング
app.get('*', (req, res) => {
res.send('ページが見つかりません');
});
ルーティングミドルウェア
app.use('/api', (req, res, next) => {
// API 処理の前処理
next();
});
app.use('/api/users', userRouter);
const router = express.Router();
router.get('/', (req, res) => {
res.send('Home');
});
router.get('/about', (req, res) => {
res.send('About');
});
app.use('/', router);
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});
const express = require('express');
const app = express();
const userRouter = express.Router();
userRouter.get('/profile', (req, res) => {
res.send('User Profile');
});
userRouter.get('/settings', (req, res) => {
res.send('User Settings');
});
app.use('/users', userRouter);
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.post('/login', (req, res) => {
// ログイン処理
});
app.get('/users/:userId', (req, res) => {
const userId = req.params.userId;
// ユーザー情報を取得して表示
});
app.get('*', (req, res) => {
res.send('ページが見つかりません');
});
app.use('/api', (req, res, next) => {
// API 処理の前処理
next();
});
app.use('/api/users', userRouter);
const router = express.Router();
router.get('/', (req, res) => {
res.send('Home');
});
router.get('/about', (req, res) => {
res.send('About');
});
app.use('/', router);
- ルーティングライブラリ
express-route-mapper
、express-route-prefix
などを使用して、ルーティングの定義を簡略化することができます。 - サードパーティのミドルウェア
body-parser
、cookie-parser
、morgan
などを使用して、リクエストボディの解析、Cookie の操作、ログの記録を行うことができます。 - Express.js の組み込みミドルウェア
express.static
、express.json
、express.urlencoded
などを使用して、静的ファイルの配信やリクエストボディの解析を行うことができます。
node.js express