Node.js Express フレームワーク
Express の紹介
Express は、簡潔で柔軟な node.js Web アプリケーションフレームワークであり、さまざまな Web アプリケーションを作成するための一連の強力な機能と、豊富な HTTP ツールを提供します。
Express を使用すると、完全な機能を備えた Web サイトを迅速に構築できます。
Express フレームワークのコア機能:
HTTP リクエストに応答するミドルウェアを設定できます。
さまざまな HTTP リクエストアクションを実行するためのルーティングテーブルを定義します。
テンプレートにパラメータを渡すことで、HTML ページを動的にレンダリングできます。
Express のインストール
Express をインストールして依存関係リストに保存します:
$ cnpm install express --save
上記のコマンドは、Express フレームワークを現在のディレクトリのnode_modulesディレクトリにインストールします。node_modulesディレクトリ内に express ディレクトリが自動的に作成されます。以下に、express フレームワークと一緒にインストールする必要がある重要なモジュールをいくつか示します:
body-parser- node.js ミドルウェア。JSON、Raw、Text、URLエンコードされたデータを処理するために使用します。
cookie-parser- これはCookieを解析するためのツールです。req.cookies を使用して送信されたCookieを取得し、それらをオブジェクトに変換します。
multer- node.js ミドルウェア。enctype="multipart/form-data"(フォームのMIMEエンコーディングを設定)のフォームデータを処理するために使用します。
$ cnpm install body-parser --save $ cnpm install cookie-parser --save $ cnpm install multer --save
インストールが完了したら、express で使用されているバージョン番号を確認できます:
$ cnpm list express /data/www/node └── [email protected] -> /Users/tianqixin/www/node/node_modules/.4.15.2@express
最初の Express フレームワークの例
次に、Express フレームワークを使用して「Hello World」を出力します。
次の例では、express モジュールを導入し、クライアントがリクエストを送信した後に「Hello World」という文字列を応答します。
express_demo.js ファイルを作成し、コードは次のとおりです:
express_demo.js ファイルのコード:
上記のコードを実行します:
$ node express_demo.js 应用实例,访问地址为 http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081 にアクセスすると、結果は次の図のようになります:

リクエストとレスポンス
Express アプリケーションはコールバック関数のパラメータを使用します:requestとresponseオブジェクトを使用してリクエストとレスポンスのデータを処理します。
app.get('/', function (req, res) {
// --
})
requestとresponseオブジェクトの具体的な説明:
Request オブジェクトrequest オブジェクトは HTTP リクエストを表し、リクエストのクエリ文字列、パラメータ、コンテンツ、HTTP ヘッダーなどの属性が含まれます。一般的な属性は次のとおりです:
- req.app:callbackが外部ファイルの場合、req.appを使用してexpressのインスタンスにアクセスします
- req.baseUrl:ルートが現在インストールされているURLパスを取得します
- req.body / req.cookies:「リクエストボディ」/ Cookie を取得します
- req.fresh / req.stale:リクエストがまだ「新鮮」かどうかを判断します
- req.hostname / req.ip:ホスト名とIPアドレスを取得します
- req.originalUrl:元のリクエストURLを取得します
- req.params:ルートのパラメータを取得します
- req.path:リクエストパスを取得します
- req.protocol:プロトコルの種類を取得します
- req.query:URL のクエリパラメータ文字列を取得します
- req.route:現在一致しているルートを取得します
- req.subdomains:サブドメインを取得します
- req.accepts():受け入れ可能なリクエストのドキュメントタイプをチェックします
- req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:指定された文字セットの最初に受け入れ可能な文字エンコーディングを返します
- req.get():指定されたHTTPリクエストヘッダーを取得します
- req.is():リクエストヘッダー Content-Type の MIME タイプを判断します
Response オブジェクト- response オブジェクトは HTTP レスポンスを表し、リクエスト受信時にクライアントに送信される HTTP レスポンスデータです。一般的なプロパティは次のとおりです:
- res.app:req.appと同じ
- res.append():指定したHTTPヘッダーを追加します
- res.set() は res.append() の後に、以前に設定したヘッダーをリセットします
- res.cookie(name,value [,option]):Cookie を設定します
- opition: domain / expires / httpOnly / maxAge / path / secure / signed
- res.clearCookie():Cookie をクリアします
- res.download():指定されたパスのファイルを送信します
- res.get():指定されたHTTPヘッダーを返します
- res.json():JSONレスポンスを送信します
- res.jsonp():JSONPレスポンスを送信します
- res.location():レスポンスの Location HTTP ヘッダーのみを設定し、ステータスコードまたは close response は設定しません
- res.redirect():レスポンスの Location HTTP ヘッダーを設定し、ステータスコード 302 も設定します
- res.render(view,[locals],callback):ビューをレンダリングし、レンダリング後の文字列をコールバックに渡します。レンダリング中にエラーが発生した場合は、next(err) が自動的に呼び出されます。コールバックには、発生する可能性のあるエラーとレンダリング後のページが渡されるため、自動出力は行われません。
- res.send():HTTPレスポンスを送信します
- res.sendFile(path [,options] [,fn]):指定されたパスのファイルを送信します - ファイルの拡張子に基づいて Content-Type を自動的に設定します
- res.set():HTTPヘッダーを設定します。objectを渡すと複数のヘッダーを一度に設定できます
- res.status():HTTPステータスコードを設定します
- res.type():Content-Type の MIME タイプを設定します
ルーティング
HTTP リクエストの基本的な応用についてはすでに理解しました。ルーティングは、誰が(指定されたスクリプトが)クライアントリクエストに応答するかを決定します。
HTTP リクエストでは、ルーティングを通じてリクエストの URL と GET/POST パラメータを抽出できます。
次に、Hello World を拡張し、より多くの種類の HTTP リクエストを処理する機能を追加します。
express_demo2.js ファイルを作成し、コードは次のとおりです:
express_demo2.js ファイルのコード:
上記のコードを実行します:
$ node express_demo2.js 应用实例,访问地址为 http://0.0.0.0:8081
次に、http://127.0.0.1:8081 の異なるアドレスにアクセスして、結果を確認できます。
ブラウザで http://127.0.0.1:8081/list_user にアクセスすると、結果は下図のようになります:
ブラウザで http://127.0.0.1:8081/abcd にアクセスすると、結果は下図のようになります:
ブラウザで http://127.0.0.1:8081/abcdefg にアクセスすると、結果は下図のようになります:
静的ファイル
Express は組み込みのミドルウェアを提供しています express.static 画像、CSS、JavaScript などの静的ファイルを設定します。
以下を使用できます: express.static ミドルウェアを使用して静的ファイルのパスを設定します。例えば、画像、CSS、JavaScript ファイルを public ディレクトリに置く場合、次のように記述します:
app.use('/public', express.static('public'));
public/images ディレクトリに画像をいくつか配置してみましょう。次のようになります:
node_modules server.js public/ public/images public/images/logo.png
次に、"Hello World" アプリケーションを修正して、静的ファイルを処理する機能を追加しましょう。
express_demo3.js ファイルを作成します。コードは次のとおりです:
express_demo3.js ファイルのコード:
上記のコードを実行します:
$ node express_demo3.js 应用实例,访问地址为 http://0.0.0.0:8081
上記のコードを実行します:
ブラウザで http://127.0.0.1:8081/public/images/logo.png にアクセスすると(この例では菜鳥教程のロゴを使用しています)、結果は下図のようになります:
GET メソッド
以下の例では、フォームで GET メソッドを使用して2つのパラメータを送信する方法を示します。server.js ファイル内のprocess_getルーターを使用して入力を処理できます:
index.html ファイルのコード:
server.js ファイルのコード:
上記のコードを実行します:
node server.js 应用实例,访问地址为 http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081/index.html にアクセスすると、図のように表示されます:
では、フォームにデータを入力して送信してみましょう。次のデモのとおりです:
POST メソッド
以下の例では、フォームで POST メソッドを使用して2つのパラメータを送信する方法を示します。server.js ファイル内のprocess_postルーターを使用して入力を処理できます:
index.html ファイルのコード:
server.js ファイルのコード:
上記のコードを実行します:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081/index.html にアクセスすると、図のように表示されます:
では、フォームにデータを入力して送信してみましょう。次のデモのとおりです:
ファイルアップロード
以下では、ファイルアップロード用のフォームを作成します。POST メソッドを使用し、フォームの enctype 属性を multipart/form-data に設定します。
index.html ファイルのコード:
server.js ファイルのコード:
上記のコードを実行します:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081/index.html にアクセスすると、図のように表示されます:
では、フォームにデータを入力して送信してみましょう。次のデモのとおりです:
Cookie 管理
ミドルウェアを使用して Node.js サーバーに Cookie 情報を送信できます。以下のコードは、クライアントが送信した Cookie 情報を出力します:
express_cookie.js ファイルのコード:
上記のコードを実行します:
$ node express_cookie.js
では、http://127.0.0.1:8081 にアクセスして、ターミナル情報の出力を確認できます。次のデモのとおりです:
関連資料
- Express 公式サイト:http://expressjs.com/
- Express 4.x API 中国語版:Express4.x API Chinese
- Express4.x API:http://expressjs.com/zh-cn/4x/api.html