8.
Expressの基礎
Expressとは
Node.jsのWebアプリケーション
ExpressはNode.jsで利用できる、WebアプリケーションおよびAPI構築できる軽量で高速なWebアプリケーションフレームワークです。

シンプルで拡張可能
シンプルな設計とモジュール性を持ち、プロジェクトの要件に合わせてカスタマイズできます。また、多くのサードパーティモジュールが利用可能で、新しい機能を追加しやすくなっています。
Expressの主な機能
ルーティング
HTTPリクエストに対するルーティングを簡単に設定できます。ルーティングは、HTTPメソッド(GET、POST、PUT、DELETEなど)とURLパスに基づいて処理されます。
ミドルウェア
Expressはミドルウェアをサポートし、リクエストとレスポンスの間でカスタムの処理を挿入できます。認証、セッション管理、ログ記録、入力検証などの一般的なタスクを実行するのに便利です。
テンプレートエンジン
HTMLを生成するためのテンプレートエンジンをサポートします。一般的なテンプレートエンジンとしては、EJS、Pug、Handlebarsなどがあります。
静的コンテンツ
静的なコンテンツ(CSS、JavaScript、画像など)を公開するミドルウェアを簡単に設定できます。
RESTful APIの作成
RESTfulなAPI構築するためのツールとして使用されています。HTTPメソッドからエンドポイントを作成し、JSONなどのデータフォーマットでデータを送受信できます。
Express の基本
サーバ起動
Expressでは、Node.jsサーバを簡単に起動できます。
サーバ作成
express() でサーバを作成します。
server.js
サーバ待機
サーバを起動すると、ポート番号とホストで待機状態になります。
server.js
- デフォルトポート:3000
- デフォルトホスト:localhost
ルーティング
Express は、get() や post() などでHTTPクエストをマッピングできます。 指定のURLでアクセスすると、対応のリクエストメソッドとコールバック関数が実行されます。
GETリクエスト
POSTリクエスト
すべてのリクエスト
GETリクエストの場合
GETリクエストは get() を利用し、リクエスト&レスポンスのオブジェクトを引数としたコールバック関数を設定します。
Expressでサーバ作成
ExpressでWebサーバの起動してみましょう。
ファイル構成
モジュール
- express
- dotenv
インストールと設定
npm 初期化
npmで初期化します。
パッケージインストール
「express」「dotenv」パッケージをインストールします。
設定ファイル「.env」
「.env」を作成してホストとポート番号を設定します。
.env
Expressサーバ
プロジェクト内に「server.js」を作成します。
モジュール読み込み
expressモジュールを読み込みます。
server.js
設定読み込み
dotenvモジュールを使って、「.env」のホストとポートを読み込みます。
server.js
Expressサーバ作成
「server.js」でExpressサーバを作成します。
server.js
マッピング
GETリクエストで「/」にアクセスしたときの処理を実装します。
server.js
リクエストオブジェクトreqから、本文、URL、クエリパラメーターをログ表示します。
server.js
- 本文:req.body
- URL:req.body
- クエリパラメータ:req.query
レスポンス
レスポンスオブジェクトresの send() でクライアントにレスポンスします。
server.js
サーバの待機
listen() でサーバ待機処理します。
server.js
サーバ起動確認
Express サーバを起動し、ブラウザで確認してみます。
node でサーバ起動
ターミナルで「server.js」を実行します。
ブラウザで確認
ブラウザで「http://localhost:3000」にアクセスします。「Hello Express!」が表示されれば成功です。

GETパラメータの確認
http://localhost:3000?keyword=apple のように GETパラメータでアクセスしてみます。

ターミナルでログで、GETパラメータが取得できるか確認してみましょう。
Express サーバ停止
Express サーバ停止したいときは、起動中のターミナルで Ctrl + C を押します。
ソース
演習
問題1
server.js を修正して、 /profile に GETアクセスしてレスポンスを返してみましょう。※プログラムを修正したら、サーバの再起動が必要です。