三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 267|回复: 0
打印 上一主题 下一主题

Node.js HTTP

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-9 12:23:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 HTTP 服务器或客户端功能必须调用 require('http')。
Node 里的 HTTP 接口支持协议里原本比较难用的特性。特别是很大的或块编码的消息。这些接口不会完全缓存整个请求或响应,这样用户可以在请求或响应中使用数据流。
HTTP消息头对象和下面的例子类似:
  1. { 'content-length': '123',
  2.   'content-type': 'text/plain',
  3.   'connection': 'keep-alive',
  4.   'host': 'mysite.com',
  5.   'accept': '*/*' }
复制代码
Keys 都是小写,值不能修改。
为了能支持尽可能多的 HTTP 应用程序,Node 提供的 HTTP API 接口都是底层的。仅能处理流和消息。它把消息解析成报文头和报文体,但是不解析实际的报文头和报文体内容。
定义报文头的时候,多个值间可用 , 分隔。除了 set-cookie 和 cookie 头,因为它们表示值的数组。诸如 content-length 的只有一个值的报文头,直接解析,并且只有单值可以表示成已经解析好的对象。
接收到的原始头信息以数组([key, value, key2, value2, ...])的形式保存在 rawHeaders 里。例如,之前提到的消息对象会有如下的 rawHeaders:
  1. [ 'ConTent-Length', '123456',
  2.   'content-LENGTH', '123',
  3.   'content-type', 'text/plain',
  4.   'CONNECTION', 'keep-alive',
  5.   'Host', 'mysite.com',
  6.   'accepT', '*/*' ]
复制代码
http.METHODS
  • {Array}
解析器支持的 HTTP 方法列表。
http.STATUS_CODES
  • {Object}
全部标准 HTTP 响应状态码的和描述的集合。例如,http.STATUS_CODES[404] === 'Not Found'。
http.createServer([requestListener])
返回 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 连接时触发。如果没有监听这个事件,客户端请求连接的时候会被关闭。
  • request 是 http 请求的参数,与 request 事件参数相同。
  • socket 是服务器和客户端间的 socket。
  • head 是 buffer 的实例。网络隧道的第一个包,可能为空。
这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。
事件: 'upgrade'
function (request, socket, head) { }
当客户端请求 http upgrage 时候会触发。如果没有监听这个事件,客户端请求一个连接的时候会被关闭。
  • request 是 http 请求的参数,与 request 事件参数相同。
  • socket 是服务器和客户端间的 socket。
  • head 是 buffer 的实例。网络隧道的第一个包,可能为空。
这个事件触发后,请求的 socket 不会有 data 事件监听器,也就是说你需要绑定一个监听器到 data 上,来处理在发送到服务器上的 socket 数据。
事件: 'clientError'
function (exception, socket) { }
如果一个客户端连接触发了一个 'error' 事件, 它就会转发到这里.
socket 是导致错误的 net.Socket 对象。



回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-6-27 00:25 , Processed in 0.025036 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表