📜  Node.js http.ServerResponse.end() 方法(1)

📅  最后修改于: 2023-12-03 15:03:13.310000             🧑  作者: Mango

Node.js http.ServerResponse.end() 方法

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-Typetext/plain 的响应头和一个只有字符串 'Hello World!\n' 的消息体。在此之后,我们通过调用 res.end() 来结束这个响应。

注意事项
  • 在调用 end() 方法之后,不能再向客户端发送响应信息。如果必须向客户端发送信息,请在调用 end() 方法之前实现。
  • 如果你加上了一个 callback 函数,它将会在响应的 headers 和 body 信息都被刷新到网络中后调用。这样,你可以在客户端接收完完整的服务器响应后,在服务端结束请求。
  • 如果 writeHead() 方法中的状态码设置不正确,end() 方法可能会无法关闭连接。如果你不确定如何正确设置状态码,请使用 200