res.redirect和res.sendfile有什么区别?



我完成了设置"失败"页面和"再试一次"按钮的教程挑战。该按钮将用户带回到'/signup/html'。我使用了

app.post("/failure", (req, res) => {
res.sendFile(__dirname + "/signup.html");
});

但是本教程使用的是res.redirect方法。

结果是一样的,但是在后台发生的事情,使用res.redirectres.sendFile?

谢谢,

表面上看,redirect发出重定向,但sendFile发送一个文件。

我将假设其他地方的代码通过发送相同的文件来响应教程所说的redirect(假设是/signin)使用的任何路径。所以看起来是一样的,但有重要的区别:

  1. 使用redirect意味着你只在一个地方指定文件名,而不是两个,这更便于维护。

  2. 如果在其他路由上设置了中间件(/signin或其他),该中间件将与redirect一起运行,而不是与您的代码一起运行。

  3. redirect发送一个消息给浏览器,告诉它请求另一个URL;您的代码直接发送文件。

  4. 使用redirect,您可以指定要使用的redirectHTTP状态码,例如,如果您想告诉客户端重定向是永久的(通过指定状态码302,尽管在您的示例中可能不合适)。

最新更新