首先,需要了解的是res.end()
和res.send()
都是Node.js用于向客户端发送HTTP响应的方法。它们都可以发送内容到客户端,但是在某些情况下它们会有些微的差异,下面就详细讲解一下它们之间的区别。
1. res.end()
1.1 作用
res.end()
是Node.js内置HTTP模块的方法之一,用于结束响应进程并向客户端发送最后一个数据块。它主要用于发送不需要额外数据处理的简单文本或二进制数据。
1.2 语法
res.end([data[, encoding]][, callback])
1.3 参数说明
data
: 可选参数,发送到客户端的数据,可以是 Buffer 或 String 类型。encoding
: 可选参数,指定 data 的编码方式,如 "utf8", "hex" 等。默认为 "utf8"。callback
: 可选参数,发送数据完成后的回调函数。
1.4 示例说明
例1:发送一个普通文本响应
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(3000);
例2:发送一个二进制文件响应
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
const stream = fs.createReadStream('./image.png');
res.writeHead(200, {'Content-Type': 'image/png'});
stream.pipe(res);
stream.on('end', () => res.end());
}).listen(3000);
2. res.send()
2.1 作用
res.send()
是Express框架特有的方法,用于向客户端发送HTTP响应,可以发送普通文本、HTML、JSON等格式的数据,并且在发送JSON数据时默认会设置Content-Type为application/json。
2.2 语法
res.send([body])
2.3 参数说明
body
: 可选参数,发送到客户端的数据,可以是 String、Object、Array 或者 Buffer 类型。
2.4 示例说明
例1:发送一个普通文本响应
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => console.log('Server is running on port 3000.'));
例2:发送一个JSON数据响应
const express = require('express');
const app = express();
app.get('/users', (req, res) => {
const users = [
{
id: 1,
name: 'Alice',
age: 23
},
{
id: 2,
name: 'Bob',
age: 24
},
{
id: 3,
name: 'Cathy',
age: 25
}
];
res.send(users);
});
app.listen(3000, () => console.log('Server is running on port 3000.'));
综上所述,res.end()
和res.send()
都是向客户端发送HTTP响应的方法,可以根据具体场景进行选择。如果只发送一个简单文本或二进制文件的响应,使用res.end()
足够了。而如果是整个应用需要返回JSON或HTML业务逻辑数据,则可以使用Express框架提供的res.send()
方法快速生成响应。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于nodejs res.end和res.send的区别 - Python技术站