Kodokon kodokon.com

Express:ルートとミドルウェア

Expressをインストールし、ルート、URLパラメーター、ミドルウェアを使って最初のサーバーを構成しましょう。

9 分 · 3 問

このレッスンを Kodokon で開く

ネイティブのhttpモジュールでサーバーを起動する方法はもう知っていますね。そこではURLの読み取りからヘッダーの組み立てまで、すべてが手作業です。Expressは、Node側のウェブ開発を標準化したフレームワークです。ルーティング、ミドルウェア、簡潔なAPIを備えながら、プロトコルについては何も隠しません。プロジェクトを作成してインストールしましょう。

BASH
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install express

package.jsonに値moduleを持つtypeプロパティを追加しましょう。そうすればプロジェクト全体がESモジュールを使います。次にserver.jsを作成します。動くサーバーには数行で十分です。アプリケーションを作成し、ルートを宣言し、ポートで待ち受けます。

JAVASCRIPT
import express from "express";

const app = express();

app.get("/", (req, res) => {
  res.send("Kodokon API online");
});

app.listen(3000, () => {
  console.log("http://localhost:3000");
});
server.js - node server.jsで実行する

ルートは、HTTPメソッドとパスを一つの関数に結びつけます。動的なセグメントはコロンで宣言します。/users/:idでは、その値はreq.params.idで取得できます。クエリパラメーター(?q=node)はreq.queryに現れます。この区別を覚えておきましょう。パスはリソースを特定し、クエリ文字列はリクエストを絞り込みます。

JAVASCRIPT
app.get("/users/:id", (req, res) => {
  const { id } = req.params;
  res.json({ id, name: "User " + id });
});

app.get("/search", (req, res) => {
  const { q } = req.query;
  res.json({ query: q ?? "" });
});

ミドルウェアとは、リクエストの到着とあなたのルートの間で実行される関数です。そのシグネチャは(req, res, next)です。reqを充実させたり、直接応答したり、next()で処理を引き渡したりできます。Expressは根本的にはミドルウェアの連鎖にすぎません。ロギング、認証、ボディの解析などです。次のミドルウェアは、すべてのリクエストをその所要時間とともに記録します。

JAVASCRIPT
app.use((req, res, next) => {
  const start = Date.now();
  res.on("finish", () => {
    const ms = Date.now() - start;
    console.log(`${req.method} ${req.url} ${ms}ms`);
  });
  next();
});
すべてを記録するには、ルートより前に宣言する

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. ルートがパス/users/:idで宣言されています。idの値はどこで読み取りますか?
    • req.query.id
    • req.params.id
    • req.body.id
  2. Expressのミドルウェアで、next()を呼び出すと何が起きますか?
    • レスポンスをクライアントへ送り返す
    • 次のミドルウェアまたはルートへ処理を引き渡す
    • サーバーを再起動する
    • 現在のリクエストをキャンセルする
  3. Node.jsでimport構文を使うには、package.jsonに何を追加する必要がありますか?
    • moduleに設定されたtypeプロパティ
    • trueに設定されたesmプロパティ
    • 何もいらない。デフォルトの動作である