📜  express 中的 404 响应 - Javascript (1)

📅  最后修改于: 2023-12-03 14:41:04.523000             🧑  作者: Mango

Express 中的 404 响应

在使用 Express 框架开发 Web 应用时,有时候用户会输入错误的 URL 或者请求了不存在的资源。这时候我们应该如何处理呢?

什么是 404 响应

404 响应表示服务器无法找到请求的资源。这个状态码通常用于表示客户端输入了错误的 URL 或者请求了不存在的资源。在 Express 框架中,我们可以通过编写中间件来处理这种情况。

如何处理 404 响应

在 Express 中,我们可以使用 app.use() 函数编写中间件来处理 404 响应。下面是一个示例代码:

app.use(function (req, res, next) {
  res.status(404).send("Sorry, can't find that!");
});

这段代码会在所有路由之后执行,如果没有匹配到任何路由,则会返回一个 404 状态码和一段文本提示。

自定义 404 页面

上面的代码虽然能够正确处理 404 响应,但是用户会看到一段纯文本提示,这显然不够友好。我们可以使用 Express 的模板引擎来渲染一个自定义的 404 页面。

首先,在 views 目录下创建一个名为 404.ejs 的文件,用于渲染自定义页面。例如:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Page Not Found</title>
</head>
<body>
  <h1>Page Not Found</h1>
  <p>The requested URL <code><%= url %></code> was not found on this server.</p>
</body>
</html>

接下来,我们修改上面的中间件代码,让它渲染我们刚才创建的页面:

app.use(function (req, res, next) {
  res.status(404).render('404', {
    url: req.originalUrl
  });
});

通过上面的代码,用户访问不存在的 URL 时会显示我们自定义的页面,而不再是纯文本提示。

总结

在 Express 中处理 404 响应很简单,只需要编写一个中间件即可。通过使用模板引擎,我们可以为用户呈现更友好的页面,提高用户体验。