node.js http中请求request和响应response信息说明

node.js http中请求request和响应response信息说明

Request

http.ServerRequest 是 HTTP请求的信息,是后端开发者最关注的内容。
它一般由http.Server 的 request 事件发送,作为第一个参数传递,
通常简称request 或 req。
HTTP 请求一般可以分为两部分:
请求头(Request Header)
请求体(Requset Body)。
以上内容由于长度较短都可以在请求头解析完成后立即读取。
而请求体可能相对较长,需要一定的时间传输,
因此 http.ServerRequest 提供了以下4个事件用于控制请求体传输。
名称 含义
data 当请求体数据到来时,该事件被触发。该事件提供一个参数
chunk 表示接收到的数据。如果该事件没有被监听,那么请求体将会被抛弃。该事件可能会被调用多次。
end 当请求体数据传输完成时,该事件被触发,此后将不会再有数据到来。
close 用户当前请求结束时,该事件被触发。不同于end,如果用户强制终止了传输,也还是调用close。

ServerRequest 的属性

名称 含义
complete 客户端请求是否已经发送完成
httpVersion HTTP 协议版本,通常是 1.0 或 1.1
method HTTP 请求方法,如 GET、POST、PUT、DELETE 等
url 原始的请求路径
headers HTTP 请求头
trailers HTTP 请求尾(不常见)
connection 当前 HTTP 连接套接字,为 net.Socket 的实例
socket connection 属性的别名
client client 属性的别名

Response

http.ClientResponse 与 http.ServerRequest 相似,
提供了三个事件data、end和close,
分别在数据到达、传输结束和连接结束时触发,
其中data事件传递一个参数chunk,表示接收到的数据。

ClientResponse 的属性

名称 含义
statusCode HTTP 状态码,如 200、404、500
httpVersion HTTP 协议版本,通常是 1.0 或 1.1
headers HTTP 请求头
trailers HTTP 请求尾(不常见)

http.ClientResponse 还提供了以下几个特殊的函数。

response.setEncoding([encoding]):设置默认的编码,
当 data 事件被触发时,数据将会以 encoding 编码。
默认值是 null,即不编码,以Buffer的形式存储。常用编码为 utf8。

response.pause():暂停接收数据和发送事件,方便实现下载功能。
response.resume():从暂停的状态中恢复。

打印信息如下:

IncomingMessage {
  _readableState: 
   ReadableState {
     objectMode: false,
     highWaterMark: 16384,
     buffer: [],
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: false,
     endEmitted: false,
     reading: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined,
  socket: 
   Socket {
     _connecting: false,
     _hadError: false,
     _handle: 
      TCP {
        _externalStream: {},
        fd: 13,
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        onconnection: null,
        writeQueueSize: 0 },
     _parent: null,
     _host: null,
     _readableState: 
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        defaultEncoding: 'utf8',
        ranOut: false,
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events: 
      { end: [Object],
        finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        drain: [Object],
        timeout: [Function],
        error: [Function: socketOnError],
        close: [Object],
        data: [Function: socketOnData],
        resume: [Function: onSocketResume],
        pause: [Function: onSocketPause] },
     _eventsCount: 10,
     _maxListeners: undefined,
     _writableState: 
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        needDrain: 
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值