全国服务热线:400-6263-705

位置:成都粤嵌教育IT技术培训机构 > 学校动态 > 成都HTTP模块常用的API有几个

成都HTTP模块常用的API有几个

来源:成都粤嵌教育IT技术培训机构时间:2022/5/19 11:25:06

  真正的继承是子类可以拥有自己的方法,并且当子类和父类的方法名相同时,子类方法可以覆盖父类方法。
  
  多学一招:class语法的本质HTTP服务器本质上也是一个Socket服务器,可以理解为在Socket服务器的基础上进行了一些封装,简化了一些操作。本节将对HTTP模块提供的API进行详细介绍。
  
  1. http.Server
  
  在Node.js中,HTTP服务器是指http.Server对象,用Node.js做的所有基于HTTP协议的系统,如网站、社交应用甚至代理服务器,都是基于http.Server实现的。它提供了一套封装级别很低的API,仅仅是流控制和简单的消息解析,所有的高层功能都要通过它的接口来实现。创建http.Server对象的语法如下:
  

Var server = http.createServer();

  在上述代码中,使用creatServer()函数创建的server对象就是一个http.Server对象。
  
  http.Server是一个基于事件的HTTP服务器,继承自EventEmitter,所有的请求都被封装为独立的事件,开发者只需要对它的事件编写相应函数即可实现HTTP服务器的所有功能。http.Server提供了一些函数,具体如下:
  
  (1)server.close([callback]):服务器停止已经开始的监听。
  
  (2) server.listen(port[, hostname][, backlog][, callback])。
  
  server.listen参数说明如下:
  
  ●port:指定监听的端口。
  
  ● hostname:指定主机名。
  
  ●backlog:指定被允许进行排队的较大待处理连接数,默认是511。
  
  ●callback:指定该服务器已经开始在指定的端口上监听时,要执行的回调处理函数。
  
  (3))server listen(handle[,callback])和server.listen(path[,callback]):监听文件系统的连接。个是监听已打开文件描述句柄,第二个是要监听一个文件的路径。除此之外,http.Server 还提供了3个事件,具体如下:
  
  (1)request:当客户端请求到来时,该事件被触发,提供两个参数req和res,分别为http.ServerRequest和http.ServerResponse的实例,表示请求和响应信息。
  
  (2)connection:当TCP连接建立时,该事件被触发,提供一个参数socket,为net.Socket 的实例。connection事件的粒度要大于request,因为客户端在Keep-Alive模式下可能会在同一个连接内发送多次请求。
  
  (3)close:当服务器关闭时,该事件被触发。注意不是在用户连接断开时。除此之外,还有checkContinue、upgrade、clientError事件,通常不需要关心,只有在实现复杂的HTTP服务器时才会用到。
  
  2. http.IncomingMessage 对象
  
  在HTTP 服务器和客户端都会创建http.IncomingMessage对象,它一般由http.Server的request事件发送,作为个参数传递,通常简称为request或req。在发送HTTP 请求时,会发送请求报文,http.IncomingMessage对象实现了一个可读流,在服务器端,http.IncomingMessage 提供了一个close 事件,用户当前请求结束时,也就是底层的套接字被关闭时该事件被触发。另外,http.IncomingMessage对象中还提供了一些函数和属性,用来获取客户端请求和服务器端响应的一些信息,如下表所示。
  
  表7-2 http.IncomingMessage 对象的常用函数和属性
  
  ES 6提供了class语法用来定义类,但即使没有class语法,在JavaScript中可以用构造函数和原型对象的语法来替代。那么,class语法定义的类和构造函数有没有区别呢?下面我们通过代码进行测试。


函数&属性

说明

message.headers

包含了随请求/回应发送的标头的一个对象

message.httpVersion

指定用于构建客户端请求/响应的HTTP版本

message.setTimeout(msccs, callback)

设置连接的以毫秒为单位的套接字超时时间,连同一个如果发生超时时被执行的回调函数

message.method

指定用于请求/响应的方法

message. statusCode

指定来自服务器的3位数状态码。此属性只在处理服务器响应的HTTP客户端上有效

message.socket

这是一个指向net.Socket对象的句柄,用来与客户端/服务器通信

message.url

发送到服务器的URL字符串,只在处理服务器中有效


  3. http.ServerResponse
  
  htp.ServerResponse是返回给客户端的信息,决定了用户较终能看到的结果。它也是由http.Server的request事件发送的,作为第二个参数传递,一般简称为response或res。
  
  http.ServerResponse是一个可写流,用来给客户端的Socket发送响应报文,在服务器做出响应之前会发送响应报文,http.ServerResponse中有3个重要的成员函数,前两个用于返回对应响应报文的响应头和响应内容,较后一个用于结束请求,具体如下:
  
  (1)response.writeHead(statusCode,[headers]):向请求的客户端发送响应头。status-Code是HTTP状态码,如200(请求成功)、404(未找到)等。headers是一个类似关联数组的对象,表示响应头的每个属性。该函数在一个请求内较多只能调用一次,如果不调用,则会自动生成一个响应头。
  
  (2)response.write(data,[encoding]):向请求的客户端发送响应内容。data是一个Buffer或字符串,表示要发送的内容。如果data是字符串,那么需要指定encoding来说明它的编码方式,默认是utf-8。在response.end 调用之前,response.write可以被多次调用。
  
  (3)response.end([data],[encoding]):结束响应,告知客户端所有发送已经完成。当所有返回的内容发送完毕时,该函数必须被调用一次。它接收两个可选参数,意义和response.write相同。如果不调用该函数,客户端将永远处于等待状态。除上述成员函数外,还有一些函数和属性可供开发者使用,如表7-3所示。
  
  表7-3 http.ServerResponse其他函数和属性


函数&属性

说明

response.add Trailers(headers)

将HTTP尾随标头写人响应的结束处

response.finished

默认为false,调用end)的数方法后结果为 true

response.getHeader(name)

获取已在响应中设置的HTTP标头的值

response.headersSent

如果标头已被发送,为true;否则为false

response.removeHeader(name)

移除已在响应中设置的一个HTTP标头

response.sendDate

如果设置为true,则Data标头的是自动生成的,并作为响应的一部分发送

response.setHeader(name, value)

设置一个特定的标头值

response.setTimeout(msecs, callback)

设置客户端连接的套接字超时时间,以毫秒计,带有一个如果发生超时将被执行的回调函数

response.statusCode

无须显式地写入标头来指定响应状态码

response.statusMessage

当使用隐式消息头并且游息头被刷新时,这个属性控制的消息状态将被发送到客户端

response.writeContinueO

发送一个HTTP/1.1100继续消息给客户端,表示请求主体应该发送


 

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/5730/news/527038/违者必究! 以上就是成都粤嵌教育IT技术培训机构 小编为您整理 成都HTTP模块常用的API有几个的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-705