搜索

有思俱乐部学习园地

HTTP

使用 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.METHODS

  • {Array}
  • 解析器支持的 HTTP 方法列表。

    http.STATUS_CODES

  • {Object}
  • 全部标准 HTTP 响应状态码的和描述的集合。例如,http.STATUS_CODES[404] === 'Not Found'。

    http.createServer[requestListener]

  • {Array}
  • 返回 http.Server 的新实例。

    requestListener 函数自动加到'request' 事件里。

    http.createClient[port][, host]

    这个函数已经被抛弃,用 http.request() 替换。创建一个新的 HTTP 客户端,连接到服务器的 port 和 host 。

    类: http.Server

    这是事件分发器 EventEmitter,有以下事件:

    事件: 'request'

    function (request, response) { }

    每当有请求的时候触发。注意:每个连接可以有多个请求(在 keep-alive 连接中)

    request 是 http.IncomingMessage 实例,response 是 http.ServerResponse 的实例。

    事件: 'connection'

    function (socket) { }

    当建立新的 TCP 流的时候。 socket 是一个 net.Socket 对象。通常用户不会访问这个事件。

    协议解析器绑定套接字时采用的方式使套接字不会出发 readable 事件。也能通过 request.connection 访问 socket。

    事件: 'close'

    function () { }

    服务器关闭的时候触发。

    事件: 'checkContinue'

    function (request, response) { }

    当 http 收到 100-continue 的 http 请求时会触发。如果没有监听这个事件,服务器将会自动发送 100 Continue 的响应。

    如果客户端需要继续发送请求主题,或者生成合适的 HTTP 响应(如,400 请求无效),可以通过调用 response.writeContinue() 来处理。

    注意:触发并处理这个事件的时候,不会再触发 request 事件。

    事件: 'connect'

    function (request, socket, head) { }

    当客户端请求 http 连接时触发。如果没有监听这个事件,客户端请求连接的时候会被关闭。

    这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。

    事件: 'upgrade'

    function (request, socket, head) { }

    当客户端请求 http upgrage 时候会触发。如果没有监听这个事件,客户端请求一个连接的时候会被关闭。

    这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。

    事件: 'clientError'

    function (exception, socket) { }

    如果一个客户端连接触发了一个 'error' 事件, 它就会转发到这里.

    socket 是导致错误的 net.Socket 对象。

    工作人员

     
                   
    作者:XXX
    信息录入:XXX
    文案编辑:XXX
    视频录制:XXX
    视频编辑:XXX
    图片编辑:XXX
    关键字修改:陈鑫