HTTP IncomingMessage

http.IncomingMessage 对象由 http.Server 或 http.ClientRequest 创建,并分别作为第一个参数传给 'request' 和 'response' 事件。 它可用于访问响应状态、消息头、以及数据。

该类实现了可读流接口。

监听事件

http.IncomingMessage 实例对象可绑定两类监听事件:

事件描述
aborted请求中止时触发
close表明底层连接已关闭(每个响应触发一次)

实现分析

该对象在服务端(http.Server)、客户端(http.ClientRequest)作用略微有差异。

  • 服务端:获取请求方的相关信息,如 request header 等。
  • 客户端:获取响应方返回的相关信息,如 statusCode 等。

服务端

标准示例:服务端

// 参数 req 即 http.IncomingMessage 实例
var http = require('http');
var server = http.createServer(function(req, res) {
console.log(req.headers);
res.end('ok');
});
server.listen(3000);

客户端

标准示例:客户端

// 参数 res 即 http.IncomingMessage 实例
var http = require('http');
http.get('http://127.0.0.1:3000', function(res) {
console.log(res.statusCode);
});

总结

服务端和客户端区分。

  • 服务端:url
  • 客户端:statusCode、statusMessage
类型名称服务端客户端
事件aborted✓✓
事件close✓✓
属性headers✓✓
属性rawHeaders✓✓
属性statusCode✕✓
属性statusMessage✕✓
属性httpVersion✓✓
属性url✓✕
属性socket✓✓
方法.destroy()✓✓
方法.setTimeout()✓✓