一覧へ

Express.js — ルーティングとCRUD

Express.jsを使ってウェブサーバーを作成し、GET/POST/PUT/DELETEルートを構成する方法を学びます。

中級
|
10
|
検証済み (2026-07)
Express.jsルートCRUDRESTウェブサーバー
進捗0/55 (0%)

Express.js — ルーティングとCRUD

このトピックを終えると

Express.jsでウェブサーバーを起動し、URLパスごとに異なるレスポンスを送信するルーティングを設定できるようになります。REST APIの4つの基本的な操作(CRUD)を実装できるようになります。


Express.jsが必要な理由

Node.jsの組み込みhttpモジュールでもサーバーを作成できます。しかし、URLの分岐、パラメータの解析、エラー処理などをすべて自分で実装する必要があります。Express.jsは、これらの繰り返し作業を代わりに処理してくれるウェブフレームワークです。

bash
# インストール
npm init -y
npm install express
javascript
// app.js — 最小限のExpressサーバー
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('こんにちは!');
});

app.listen(3000, () => {
  console.log('サーバー実行: http://localhost:3000');
});

node app.jsを実行すると、ブラウザでlocalhost:3000にアクセスできます。この6行がExpressのすべてです。残りは、このパターンの繰り返しと拡張です。


ルーティング — URLと関数を関連付ける

ルーティングは、「このURLへのリクエストがあったら、この関数を実行する」というルールです。

javascript
// GET — データ取得
app.get('/users', (req, res) => {
  res.json([{ id: 1, name: 'キム・フン' }, { id: 2, name: 'イ・ス' }]);
});

// GET — URLパラメータで特定のアイテムを取得
app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.json({ id: userId, name: 'キム・フン' });
});

// POST — データ作成
app.use(express.json()); // JSONリクエストボディの解析は必須
app.post('/users', (req, res) => {
  const newUser = req.body;
  res.status(201).json({ message: '作成完了', user: newUser });
});

:id動的パラメータです。/users/1/users/42のどちらもこのルートにマッチし、req.params.idで値を取得できます。


CRUD — 4つの基本的な操作

ウェブアプリケーションのデータ処理は、ほとんどの場合、この4つに帰着します。

操作HTTPメソッドURL例説明
CreatePOST/users新しいユーザーを作成
ReadGET/users または /users/:idリストまたは個別に取得
UpdatePUT/users/:id特定のユーザー情報を修正
DeleteDELETE/users/:id特定のユーザーを削除
javascript
// Update — データ修正
app.put('/users/:id', (req, res) => {
  const { id } = req.params;
  const updatedData = req.body;
  res.json({ message: `${id}番のユーザー修正完了`, data: updatedData });
});

// Delete — データ削除
app.delete('/users/:id', (req, res) => {
  const { id } = req.params;
  res.json({ message: `${id}番のユーザー削除完了` });
});

このパターンをREST APIと呼びます。URLは「何か(名詞)」、HTTPメソッドは「どのように(動詞)」を表します。/usersという1つのURLに、GET/POST/PUT/DELETEの4つの操作がマッピングされる構造です。


ルーターの分離 — ファイルが大きくなる場合

ルートが多くなると、app.jsにすべて含めることはできません。ExpressのRouterを使用して、ファイルごとに分離します。

javascript
// routes/users.js
const router = require('express').Router();

router.get('/', (req, res) => { res.json([]); });
router.post('/', (req, res) => { res.status(201).json({}); });
router.put('/:id', (req, res) => { res.json({}); });
router.delete('/:id', (req, res) => { res.json({}); });

module.exports = router;
javascript
// app.js — ルーターをマウント
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
// /users + router内部の '/' = GET /users
// /users + router内部の '/:id' = PUT /users/42

app.use('/users', usersRouter)が重要です。/usersで始まるすべてのリクエストをroutes/users.jsが処理します。前のトピック(コードのモジュール化)の実践的な応用です。


重要なまとめ

Expressは「URL → 関数」の関連付けがすべてです。この単純な構造の上に、ミドルウェア、認証、データベースとの連携が積み重なるのであり、根本は変わりません。CRUDの4つのパターンを習得すれば、ほとんどのバックエンドAPIを作成できます。


→ プロフィールに適用: DevBench — Expressの基礎

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...