Expressをインストールし、ルート、URLパラメーター、ミドルウェアを使って最初のサーバーを構成しましょう。
このレッスンを Kodokon で開くネイティブのhttpモジュールでサーバーを起動する方法はもう知っていますね。そこではURLの読み取りからヘッダーの組み立てまで、すべてが手作業です。Expressは、Node側のウェブ開発を標準化したフレームワークです。ルーティング、ミドルウェア、簡潔なAPIを備えながら、プロトコルについては何も隠しません。プロジェクトを作成してインストールしましょう。
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expresspackage.jsonに値moduleを持つtypeプロパティを追加しましょう。そうすればプロジェクト全体がESモジュールを使います。次にserver.jsを作成します。動くサーバーには数行で十分です。アプリケーションを作成し、ルートを宣言し、ポートで待ち受けます。
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});ルートは、HTTPメソッドとパスを一つの関数に結びつけます。動的なセグメントはコロンで宣言します。/users/:idでは、その値はreq.params.idで取得できます。クエリパラメーター(?q=node)はreq.queryに現れます。この区別を覚えておきましょう。パスはリソースを特定し、クエリ文字列はリクエストを絞り込みます。
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は根本的にはミドルウェアの連鎖にすぎません。ロギング、認証、ボディの解析などです。次のミドルウェアは、すべてのリクエストをその所要時間とともに記録します。
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();
});/users/:idで宣言されています。idの値はどこで読み取りますか?req.query.idでreq.params.idでreq.body.idでnext()を呼び出すと何が起きますか?import構文を使うには、package.jsonに何を追加する必要がありますか?moduleに設定されたtypeプロパティtrueに設定されたesmプロパティ