假设我有这样的中间件;
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()
吗? (或者 connect 是否检测到请求已经结束并干净退出?) - 假设我应该调用
next()
,我猜这意味着我可能会接收到我的中间件的请求,这些请求可能有已经被链中更高的其他中间件终止;我该如何保护自己免受这种伤害?
最佳答案
res.redirect()
确实调用了res.end()
本身;- 如果你的中间件不是终点,你应该调用
next()
;在生成重定向的情况下,它是一个端点并且next()
不应该被调用,但是如果req.host === host
,您需要调用next()
将请求沿链向上移动到其他中间件/路由; - 请求不会结束,响应会结束。当它发生时,它将结束中间件链,因此您不必担心。
关于javascript - "end"来自 express/connect 中间件的请求的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15571779/