在使用 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() 向客户端发送数据:
// www.javascriptcn.com code example
const express = require('express')
const app = express()
// 发送文本
app.get('/text', function(req, res) {
res.send('Hello World!')
})
// 发送 HTML
app.get('/html', function(req, res) {
res.send('<h1>Hello World!</h1>')
})
// 发送 JSON
app.get('/json', function(req, res) {
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 }
]
res.json(users)
})
app.listen(3000, function() {
console.log('Server running at http://localhost:3000')
})希望本文对你理解 Express.js 中的 res.send() 和 res.json() 方法有所帮助,更好地应用于实际项目中!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9656