13
假設我有中間件如此;「結束」express/connect中間件請求的正確方法是什麼?
var express = require('express');
var app = express();
app.use(function (req, res, next) {
var host = "example.com";
if (req.host !== host) {
res.redirect(301, host + req.originalUrl);
res.end();
}
});
我需要遵守什麼樣的規則?
- 我應該打電話給
res.end()
? (或不res.redirect()
爲我做到這一點?) - 我應該打電話
next()
? (或不連接檢測已經結束的請求,並退出乾淨?) - 假設我應該被調用
next()
,我想這意味着我可能會被接收請求我的中間件可能已經被其他結束中間件鏈較高;我如何保護自己免受這種傷害?
需要注意的是,如果您有其他處理要做,您仍然可以調用next,但是請注意,您已發送響應,以便響應對象完成並且幾乎是後響應處理的變量。 要發送一個響應,然後做其他操作慢喜歡與其他服務器通信跟蹤統計或發送電子郵件,或推動事情到一個隊列或者跟一個數據庫或等,所以真的結束明示這是非常有用請求/響應鏈是當你不再調用中間件並且它被垃圾收集時。 – 2016-12-08 17:37:27