如果我使用 res.send 而不是 res.json 发送 json 文件会怎样?
What would happen if i send a json file using res.send instead of res.json?
我们有一个方法 res.json 在 NodeJs 中发送文件,但是如果我们使用 res.send 发送 json 文件会发生什么。会有什么后果,为什么我们要避免这样做?
我假设你在谈论 ExpressJS:
每当 Express 应用服务器收到 HTTP 请求时,它都会为开发人员提供一个对象,通常称为 res。例如,
例子
app.get('/test', (req, res) => {
// use req and res here
})
res 对象基本上是指将作为此 API 调用的一部分发出的响应。
res.send:
res.send函数设置内容类型为text/Html 这意味着客户端现在会将其视为文本。然后它 returns 对客户端的响应。
res.json:
其他手机上的res.json函数将content-type header改为application/JSON 以便客户端将响应字符串视为有效的 JSON 对象。它还 returns 对客户端的响应。
结论:
对于 res.send,如果需要,您必须注意将其转换为 JSON 对象,而对于 res.json,这是自动完成的。
res.json([body])
发送 JSON 响应。此方法发送一个响应(带有正确的 content-type),即 使用 JSON.stringify().[=11 将参数转换为 JSON 字符串=]
参数可以是任意JSON类型,包括object、array、string、Boolean、number、null,也可以将其他值转换为JSON.
res.send([body])
发送 HTTP 响应。
body 参数可以是缓冲区 object、字符串、object、布尔值或数组。
此方法为简单的 non-streaming 响应执行许多有用的任务:例如,它自动分配 Content-Length HTTP 响应 header 字段(除非先前已定义)并提供自动 HEAD 和HTTP 缓存新鲜度支持。
当参数是 Buffer object 时,该方法将 Content-Type 响应 header 字段设置为“application/octet-stream”,除非先前已定义。
当参数为字符串时,该方法将Content-Type设置为“text/html”。
当参数为数组或Object时,Express 以JSON 表示响应。
我们有一个方法 res.json 在 NodeJs 中发送文件,但是如果我们使用 res.send 发送 json 文件会发生什么。会有什么后果,为什么我们要避免这样做?
我假设你在谈论 ExpressJS:
每当 Express 应用服务器收到 HTTP 请求时,它都会为开发人员提供一个对象,通常称为 res。例如,
例子
app.get('/test', (req, res) => {
// use req and res here
})
res 对象基本上是指将作为此 API 调用的一部分发出的响应。
res.send:
res.send函数设置内容类型为text/Html 这意味着客户端现在会将其视为文本。然后它 returns 对客户端的响应。
res.json:
其他手机上的res.json函数将content-type header改为application/JSON 以便客户端将响应字符串视为有效的 JSON 对象。它还 returns 对客户端的响应。
结论:
对于 res.send,如果需要,您必须注意将其转换为 JSON 对象,而对于 res.json,这是自动完成的。
res.json([body])
发送 JSON 响应。此方法发送一个响应(带有正确的 content-type),即 使用 JSON.stringify().[=11 将参数转换为 JSON 字符串=]
参数可以是任意JSON类型,包括object、array、string、Boolean、number、null,也可以将其他值转换为JSON.
res.send([body])
发送 HTTP 响应。
body 参数可以是缓冲区 object、字符串、object、布尔值或数组。
此方法为简单的 non-streaming 响应执行许多有用的任务:例如,它自动分配 Content-Length HTTP 响应 header 字段(除非先前已定义)并提供自动 HEAD 和HTTP 缓存新鲜度支持。
当参数是 Buffer object 时,该方法将 Content-Type 响应 header 字段设置为“application/octet-stream”,除非先前已定义。
当参数为字符串时,该方法将Content-Type设置为“text/html”。
当参数为数组或Object时,Express 以JSON 表示响应。