使用 HTTP 服务器或客户端功能必须调用 require('http')
Node 里的 HTTP 接口支持协议里原本比较难用的特性。特别是很大的或块编码的消息。这些接口不会完全缓存整个请求或响应,这样用户可以在请求或响应中使用数据流。 HTTP消息头对象和下面的例子类似:
HTTP消息头对象和下面的例子类似:
{ 'content-length': '123', 'content-type': 'text/plain', 'connection': 'keep-alive', 'host': 'mysite.com', 'accept': '*/*' }
Keys 都是小写,值不能修改。
为了能支持尽可能多的 HTTP 应用程序,Node 提供的 HTTP API 接口都是底层的。仅能处理流和消息。它把消息解析成报文头和报文体,但是不解析实际的报文头和报文体内容。
定义报文头的时候,多个值间可用 , 分隔。除了 set-cookie 和 cookie 头,因为它们表示值的数组。诸如 content-length 的只有一个值的报文头,直接解析,并且只有单值可以表示成已经解析好的对象。
接收到的原始头信息以数组([key, value, key2, value2, ...])的形式保存在 rawHeaders 里。例如,之前提到的消息对象会有如下的 rawHeaders:
[ 'ConTent-Length', '123456', 'content-LENGTH', '123', 'content-type', 'text/plain', 'CONNECTION', 'keep-alive', 'Host', 'mysite.com', 'accepT', '*/*' ]
解析器支持的 HTTP 方法列表。
全部标准 HTTP 响应状态码的和描述的集合。例如,http.STATUS_CODES[404] === 'Not Found'。
返回 http.Server 的新实例。
requestListener 函数自动加到'request' 事件里。
这个函数已经被抛弃,用 http.request() 替换。创建一个新的 HTTP 客户端,连接到服务器的 port 和 host 。
这是事件分发器 EventEmitter,有以下事件:
function (request, response) { }
每当有请求的时候触发。注意:每个连接可以有多个请求(在 keep-alive 连接中)
request 是 http.IncomingMessage 实例,response 是 http.ServerResponse 的实例。
function (socket) { }
当建立新的 TCP 流的时候。 socket 是一个 net.Socket 对象。通常用户不会访问这个事件。
协议解析器绑定套接字时采用的方式使套接字不会出发 readable 事件。也能通过 request.connection 访问 socket。
function () { }
服务器关闭的时候触发。
function (request, response) { }
当 http 收到 100-continue 的 http 请求时会触发。如果没有监听这个事件,服务器将会自动发送 100 Continue 的响应。
如果客户端需要继续发送请求主题,或者生成合适的 HTTP 响应(如,400 请求无效),可以通过调用 response.writeContinue() 来处理。
注意:触发并处理这个事件的时候,不会再触发 request 事件。
function (request, socket, head) { }
当客户端请求 http 连接时触发。如果没有监听这个事件,客户端请求连接的时候会被关闭。
这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。
function (request, socket, head) { }
当客户端请求 http upgrage 时候会触发。如果没有监听这个事件,客户端请求一个连接的时候会被关闭。
这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。
function (exception, socket) { }
如果一个客户端连接触发了一个 'error' 事件, 它就会转发到这里.
socket 是导致错误的 net.Socket 对象。
作者:信息录入:文案编辑:视频录制:视频编辑:图片编辑:关键字修改: