你的浏览器不支持canvas

Enjoy life!

nodeJs - HTTP服务器 - 中篇 - http.IncomingMessage

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

其他链接:

以下内容全部源于: 《Node.js权威指南》

一、获取客户端请求信息

1.1 http.IncomingMessage

  • http.IncomingMessage对象:用于读取客户端请求流中的数据 【createServer 中第一个参数 - request
    • 当从客户端请求流中读取到新的数据时触发data事件
    • 当读取完客户端请求流中的数据时触发end事件
  • http.IncomingMessage对象拥有的一些属性:
  • method:字符串,客户端向服务器端发送请求时使用的方法,POST
  • url:字符串,客户端发送请求时所使用的 URL。【常用来判断客户端请求的页面及需要执行的处理。】
  • headers:客户端发送的请求头对象,存放客户端发送的所有请求头信息,包括cookie以及浏览器的各种信息

http

  • httpVersion:字符串,客户端发送的HTTP版本
  • trailers:客户端发送的trailer对象。它存放了客户端附加的一些HTTP头信息。该对象被包含在客户端发送的请求数据之后,因此只有当http.ImcomingMessage对象的end事件触发之后才能读取到trailer对象中的信息
  • socket:服务器端用于监听客户端请求的socket端口对象

1.2 实例 - 在文件中保存客户端请求信息

var http = require('http');
var fs = require('fs');

var server = http.createServer(function (req, res) {
  if (req.url !== '/favicon.ico') {
    var out = fs.createWriteStream('./request.log');
    out.write('客户端请求所用方法为:' + req.method + '\r\n');
    out.write('客户端请求所用url字符串为:' + req.url + '\r\n');
    out.write('客户端请求头对象为:' + JSON.stringify(req.headers) + '\r\n');
    out.write('客户端请求所用 HTTP 版本为:' + req.httpVersion + '\r\n');
  }
});

server.listen(8080, "127.0.0.1", function () {
  console.log('开始监听');
});
  • 运行过程

relationship-map

1.3 req 的 data 事件

  • reqdata 事件可以接收到前端传来的数据
req.on('data', function(data) {
  // ...
})

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。