📅  最后修改于: 2023-12-03 15:03:13.310000             🧑  作者: Mango
Node.js 的 http.ServerResponse 对象是在 HTTP 服务器进行请求处理时创建的。其中,end()
是 http.ServerResponse 对象的一个方法。在一次完整的 HTTP 请求-响应周期中,服务器必须向客户端发送一个响应(Response),并通过调用 http.ServerResponse 的 end()
方法来完成响应。
http.ServerResponse 的 end()
方法用于结束服务器对客户端的响应。当调用这个方法时,响应头信息和响应体信息都将被发送给客户端。
http.ServerResponse 的 end()
方法有两种语法:
response.end(); // 无参调用
response.end(data, encoding, callback); // 有参调用
参数说明:
data
:一个字符串或一个 Buffer 对象,用于表示响应报文的消息体。如果不指定这个参数,则默认消息体为空。encoding
:一个字符串,用于描述 data
的编码方式。默认值为utf8
。callback
:一个回调函数。当 http.ServerResponse 发送完响应后,Node.js 将调用这个回调函数。由于 end()
方法用于结束响应,所以不存在返回值。
以下是一个使用 http.ServerResponse 的 end()
方法的示例:
const http = require('http');
http.createServer((req, res) => {
// 响应头
res.writeHead(200, {'Content-Type': 'text/plain'});
// 响应体
res.write('Hello World!\n');
// 结束响应
res.end();
}).listen(8080);
console.log('Server listening on http://127.0.0.1:8080');
在这个例子中,我们创建了一个 HTTP 服务器,当浏览器请求这个服务器时,这个服务器会返回一个 HTTP 响应。在响应中,它包含了一个 Content-Type
为 text/plain
的响应头和一个只有字符串 'Hello World!\n'
的消息体。在此之后,我们通过调用 res.end()
来结束这个响应。
end()
方法之后,不能再向客户端发送响应信息。如果必须向客户端发送信息,请在调用 end()
方法之前实现。writeHead()
方法中的状态码设置不正确,end()
方法可能会无法关闭连接。如果你不确定如何正确设置状态码,请使用 200
。