📜  express 中间件状态码总是 200 - Javascript (1)

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

Express 中间件状态码总是 200

在使用 Express 框架开发 web 应用程序时,你可能会遇到一个问题:你的中间件(middleware)总是返回 200 状态码,即使实际上它们应该返回其他状态码(如 404 或 500)。这是为什么呢?

问题原因

问题的根本原因在于你的中间件没有正确地处理 HTTP 响应。在 Express 中,每个中间件都具有一个 next 函数,用于将请求转发给下一个中间件或者路由处理函数。如果你的中间件没有正确地处理响应,而是直接调用了 next 函数,那么最终返回到客户端的响应就会是 200 状态码。

解决方案

正确地处理 HTTP 响应,是解决这个问题的关键。在 Express 中,你可以使用 res 对象来处理响应。拥有正确的 Content-Type 和响应正文内容,是构建正确的 HTTP 响应的必要条件。

以下是一个示例中间件,用于处理 404 错误:

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

在这个示例中间件中,我们使用了 res.status(404) 来设置状态码为 404,并使用 res.send 方法对客户端发送一个错误信息。

总结

Express 中间件状态码总是返回 200,通常是因为未正确地处理 HTTP 响应。为了解决这个问题,你需要正确的使用 res 对象处理响应,并确保在中间件中的 HTTP 响应正确地返回状态码。