Expressjs-middleware
ExpressJS-ミドルウェア
ミドルウェア関数は、* requestオブジェクト(req)、 responseオブジェクト(res)、およびアプリケーションの要求/応答サイクルの次のミドルウェア関数にアクセスできる関数です。 これらの関数は、要求本文の解析、応答ヘッダーの追加などのタスクの *req および res オブジェクトを変更するために使用されます。
ここに動作中のミドルウェア機能の簡単な例があります-
var express = require('express');
var app = express();
//Simple request time logger
app.use(function(req, res, next){
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware
function/route handler.
next();
});
app.listen(3000);
上記のミドルウェアは、サーバー上のすべての要求に対して呼び出されます。 したがって、すべての要求の後、コンソールに次のメッセージが表示されます-
A new request received at 1467267512545
特定のルート(およびそのすべてのサブルート)に制限するには、そのルートを app.use() の最初の引数として指定します。 例えば、
var express = require('express');
var app = express();
//Middleware function to log request protocol
app.use('/things', function(req, res, next){
console.log("A request for things received at " + Date.now());
next();
});
//Route handler that sends the response
app.get('/things', function(req, res){
res.send('Things');
});
app.listen(3000);
これで、 '/things’のサブルートを要求するたびに、時間を記録します。
ミドルウェア呼び出しの順序
Expressのミドルウェアで最も重要なことの1つは、ファイルに書き込まれる/含まれる順序です。ルートの一致も考慮する必要があるため、実行される順序。
たとえば、次のコードスニペットでは、最初の関数が最初に実行され、次にルートハンドラー、最後に関数が実行されます。 この例では、ルートハンドラの前後にミドルウェアを使用する方法をまとめています。また、ルートハンドラーをミドルウェア自体として使用する方法。
var express = require('express');
var app = express();
//First middleware before response is sent
app.use(function(req, res, next){
console.log("Start");
next();
});
//Route handler
app.get('/', function(req, res, next){
res.send("Middle");
next();
});
app.use('/', function(req, res){
console.log('End');
});
app.listen(3000);
このコードを実行した後に「/」にアクセスすると、応答が Middle としてコンソールに表示されます-
Start
End
次の図は、ミドルウェアについて学んだことをまとめたものです-
独自のミドルウェアの作成方法を説明したので、最も一般的に使用されているコミュニティ作成のミドルウェアについて説明します。
サードパーティのミドルウェア
Expressのサードパーティミドルウェアのリストは、http://expressjs.com/en/resources/middlewarel [こちら]から入手できます。 以下は、最も一般的に使用されるミドルウェアの一部です。また、これらを使用/マウントする方法を学びます-
ボディパーサー
これは、ペイロードが添付されているリクエストのボディを解析するために使用されます。 ボディパーサーをマウントするには、 npm install --save body-parserを使用してインストールし、マウントするには、index.jsに次の行を含めます。
var bodyParser = require('body-parser');
//To parse URL encoded data
app.use(bodyParser.urlencoded({ extended: false }))
//To parse json data
app.use(bodyParser.json())
body-parserで利用可能なすべてのオプションを表示するには、githubページにアクセスしてください。
cookie-parser
_Cookie_ヘッダーを解析し、req.cookiesにcookie名をキーとするオブジェクトを設定します。 Cookieパーサーをマウントするには、npm install --save cookie-parserを使用してインストールし、マウントするために、index.jsに次の行を含めます-
var cookieParser = require('cookie-parser');
app.use(cookieParser())
エクスプレスセッション
指定されたオプションでセッションミドルウェアを作成します。 セッションのセクションでその使用法について説明します。
ExpressJSには他にも多くのサードパーティミドルウェアがあります。 ただし、ここでは重要なもののみを説明しました。