- ExpressJS 教程
- ExpressJS - 首頁
- ExpressJS - 概述
- ExpressJS - 環境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 構建
- ExpressJS - 中介軟體
- ExpressJS - 模板引擎
- ExpressJS - 靜態檔案
- ExpressJS - 表單資料
- ExpressJS - 資料庫
- ExpressJS - Cookie
- ExpressJS - Session
- ExpressJS - 身份驗證
- ExpressJS - RESTful API
- ExpressJS - 腳手架
- ExpressJS - 錯誤處理
- ExpressJS - 除錯
- ExpressJS - 最佳實踐
- ExpressJS - 資源
- ExpressJS 有用資源
- ExpressJS - 快速指南
- ExpressJS - 有用資源
- ExpressJS - 討論
ExpressJS - 中介軟體
中介軟體函式是可以訪問請求物件 (req)、響應物件 (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 中中介軟體最重要的方面之一是它們在檔案中編寫/包含的順序;還需要考慮它們執行的順序,前提是路由也匹配。
例如,在以下程式碼片段中,第一個函式先執行,然後是路由處理程式,最後是結束函式。此示例總結了如何在路由處理程式之前和之後使用中介軟體;以及如何將路由處理程式本身用作中介軟體。
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 的第三方中介軟體列表可在此處獲得。以下是一些最常用的中介軟體;我們還將學習如何使用/掛載這些中介軟體:
body-parser
此中介軟體用於解析帶有有效負載的請求的主體。要掛載 body-parser,我們需要使用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頭並使用 cookie 名稱作為鍵填充 req.cookies 物件。要掛載 cookie-parser,我們需要使用 npm install --save cookie-parser 進行安裝,並將其包含在 index.js 中:
var cookieParser = require('cookie-parser');
app.use(cookieParser())
express-session
它使用給定選項建立會話中介軟體。我們將在 Session 部分討論其用法。
ExpressJS 中還有許多其他第三方中介軟體。但是,這裡我們只討論了一些重要的中介軟體。
