返回

如何理解 Express 中的 res.send() 和 res.end()

前端

Express 是一个流行的 Node.js 框架,用于构建 Web 应用程序和 API。它提供了一系列强大的功能,包括路由、中间件和模板引擎。其中,res.send() 和 res.end() 是两个常用的方法,用于向客户端发送 HTTP 响应。

res.send()

res.send() 方法可以发送多种数据类型,包括字符串、对象、JSON 和 HTML。它使用内置的 express-response-obj 库来将数据序列化为字符串,然后发送到客户端。例如:

app.get('/data', (req, res) => {
  const data = {
    name: 'John Doe',
    age: 30
  };

  res.send(data);
});

上面的代码将把 data 对象序列化为 JSON 字符串,然后发送到客户端。客户端可以接收并解析 JSON 字符串,以访问数据。

res.end()

res.end() 方法只能发送字符串。它直接将字符串发送到客户端,而不会进行任何序列化。例如:

app.get('/text', (req, res) => {
  const text = 'Hello, world!';

  res.end(text);
});

上面的代码将把 text 字符串发送到客户端。客户端可以接收并显示字符串。

res.send() 和 res.end() 的区别

res.send() 和 res.end() 之间的区别在于 res.send() 可以发送多种数据类型,而 res.end() 只发送字符串。此外,res.send() 使用内置的 express-response-obj 库对数据进行序列化,而 res.end() 不进行序列化。

什么时候使用 res.send() 和 res.end()

在大多数情况下,建议使用 res.send(),因为它可以发送多种数据类型,并且可以使用内置的 express-response-obj 库对数据进行序列化。只有在需要发送纯字符串时,才使用 res.end()。

总结

res.send() 和 res.end() 是 Express 中用于向客户端发送 HTTP 响应的两种方法。res.send() 可以发送多种数据类型,而 res.end() 只发送字符串。在大多数情况下,建议使用 res.send(),因为它可以发送多种数据类型,并且可以使用内置的 express-response-obj 库对数据进行序列化。