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()
호출해야 가정하면, 그 의미 추측 I 수 이미 다른 의해 종료되었을 수 있습니다 내 미들웨어에 잠재적으로 수신 할 수 요청 사슬에서 더 높은 미들웨어; 내가 어떻게 자신을 보호해야합니까?
당신이 할 수있는 다른 처리 방법이 있다면 다음에 응답 할 수 있다는 점에 유의해야합니다. 그러나 응답 개체가 완료되었으므로 응답 개체가 끝났으며 응답 후 처리를위한 변수가 상당합니다. 응답을 보내려는 경우 다른 서버와 통신하여 통계를 추적하거나 전자 메일을 보내거나 대기열에 넣거나 데이터베이스 등에 연결하는 등 더 느린 작업을 수행 할 때 유용합니다. 요청/응답 체인은 더 이상 미들웨어를 호출하지 않고 가비지 수집을하는 경우입니다. –