在使用 Express.js 开发 web 应用程序时,我们通常需要向客户端发送响应。其中,res.send()
和 res.json()
是两种常用的响应方式。虽然它们都可以将数据发送给客户端,但它们之间有一些重要的区别。
res.send()
res.send()
是 Express.js 中最基本的响应方法之一。它可以向客户端发送字符串、HTML、JSON 等各种类型的数据。具体来说,res.send()
的功能有以下几个方面:
- 发送文本:如果参数是字符串,则将其直接作为响应的主体发送给客户端。
app.get('/', function(req, res) { res.send('Hello World!') })
- 发送 HTML:如果参数是 HTML,则将其解析并作为响应的主体发送给客户端。
app.get('/', function(req, res) { res.send('<h1>Hello World!</h1>') })
- 发送 JSON:如果参数是对象或数组,则自动将其转换为 JSON 格式,并作为响应的主体发送给客户端。
app.get('/users', function(req, res) { const users = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 } ] res.send(users) })
res.json()
res.json()
是用于向客户端发送 JSON 数据的方法。与 res.send()
不同,res.json()
仅能发送 JSON 数据,并自动设置响应头的 Content-Type 字段为 application/json。
app.get('/users', function(req, res) { const users = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 } ] res.json(users) })
差异和选择
虽然 res.send()
和 res.json()
都可以向客户端发送数据,但它们之间有以下区别:
Content-Type:
res.send()
不会自动设置响应头的 Content-Type 字段,而res.json()
会将其设置为 application/json。自动转换:
res.send()
可以发送字符串、HTML 或 JSON 数据,但需要手动指定类型。而res.json()
只能发送 JSON 数据,但不需要手动转换。性能:由于
res.json()
不需要进行手动转换,因此它通常比res.send()
更快速。
在实际开发中,我们应该根据具体情况来选择使用 res.send()
还是 res.json()
。如果需要发送 JSON 数据,则应该优先考虑使用 res.json()
,否则可以考虑使用 res.send()
。
示例代码
下面是一个完整的示例代码,演示了如何使用 res.send()
和 res.json()
向客户端发送数据:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- -- ---- ---------------- ------------- ---- - --------------- -------- -- -- -- ---- ---------------- ------------- ---- - ------------------- ------------- -- -- -- ---- ---------------- ------------- ---- - ----- ----- - - - ----- -------- ---- -- -- - ----- ------ ---- -- - - --------------- -- ---------------- ---------- - ------------------- ------- -- ----------------------- --
希望本文对你理解 Express.js 中的 res.send()
和 res.json()
方法有所帮助,更好地应用于实际项目中!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9656