常用属性
headers
: 一个包含请求头的对象。键是头名称(小写),值是头值。httpVersion
: HTTP版本,通常是'1.1'
或'1.0'
。method
: 请求方法,如'GET'
、'POST'
等。url
: 请求的URL字符串,不包含协议、主机名、端口或查询字符串。rawHeaders
: 一个包含原始请求头(未经过键名小写化等处理)的数组。trailers
: (在HTTP/1.1分块传输编码的响应中)表示消息尾部的对象,与headers
类似。socket
: 与请求相关联的net.Socket
对象。
常用方法
setEncoding([encoding])
: 设置用于解码传入数据的编码。默认是null
(即Buffer对象)。pause()
: 暂停数据接收。resume()
: 恢复数据接收。destroy([error])
: 销毁消息并结束与之关联的socket
。如果提供了error
参数,则会触发'error'
事件。
监听事件
'data'
: 当接收到数据时触发。回调函数接收一个Buffer或字符串(取决于setEncoding
的设置)。'end'
: 当没有更多数据要接收时触发。'close'
: 当连接关闭时触发。'error'
: 当发生错误时触发。
处理HTTP请求(http.ServerRequest
)
在处理HTTP请求时,你通常会使用http.createServer
方法创建一个HTTP服务器,并在回调函数中处理http.ServerRequest
对象(通常简称为req
)。
const http = require('http');
const server = http.createServer((req, res) => {
// 访问请求头
console.log(req.headers);
// 访问请求方法
console.log(req.method);
// 访问请求的URL
console.log(req.url);
// 设置响应头并发送响应
res.writeHead(200, {
'Content-Type': 'text/plain' });
res.end('Hello, world!\n');
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});
在上面的例子中,req
是一个http.ServerRequest
对象,它继承自http.IncomingMessage
。你可以通过req
访问请求的各种信息,并使用res
(一个http.ServerResponse
对象)来发送响应。
总结
http.IncomingMessage
是Node.js中处理HTTP消息的基础类。在处理HTTP请求时,你通常会与它的子类http.ServerRequest
打交道。了解这些类的属性和方法对于编写有效的Node.js HTTP服务器至关重要。