Node.js教程-http模块

http模块是Node.js官方提供的用来创建 Web服务器的模块。

http.server事件

http.server是一个基于事件的http服务器,所有的请求都被封装成独立事件。它继承自EventEmitter。提供了多种事件:

  • request 客户端发送请求时,该事件被触发。它提供了http.ServerRequesthttp.ServerResponse两个实例参数
  • connection 当TCP建立连接时,该事件被触发。它提供了一个net.Socket的实例参数
  • close 当服务器关闭时,该事件被触发。
  • 除上述事件外,还有checkContinueupgradeclientError事件
const http = require('http')

var server = new http.Server()

// connection 事件监听
server.on('connection', () => {
  console.log("TCP 握手")
})

// request 事件监听
server.on('request', (req, res) => {
  res.end("Hello Node.js")
})

// close 事件监听
server.on('close', () => {
  console.log("服务器关闭")
})

server.close()
server.listen(80)

http.ServerRequest请求信息

http.ServerRequestHTTP请求信息,其分为:请求头请求体
http.ServerRequest提供了3个事件用于控制请求传输:

  1. data 当请求体数据到来时,该事件被触发。该事件提供一个trunk参数,表示接受到的数据。若该事件没有被监听,则请求体会被抛弃
  2. end 当请求体数据传输完成时触发
  3. close 用户当前请求结束时触发

属性

名称说明
complete客户端请求是否已发送完成
httpVersionHTTP协议版本
HttpVersionHTTP协议版本
methodHTTP请求方法
urlHTTP请求路径(不包含请求协议、域名、端口号)
headersHTTP请求头
trailersHTTP请求尾信息
connectionHTTP连接套接字,为 net.Socket实例
socketconnection别名
clientclient属性别名

http.ServerResponse 响应信息

当HTTP服务器接受到一个请求时,它在内部会创建一个ServerResponse对象。

方法

名称说明
setHeader(name, value)设置响应头信息
getHeader(name)获取响应中设置的一个HTTP标头
removerHeader(name)移除响应中设置的一个HTTP标头
setTimeout(timeout [, callback])设置客户端连接的套接字超时时间
write(data[, encoding])向响应流(Writeable)
end([data [, encoding]])向响应流(Writeable)

注意:**write()end()**都是表示向响应流中写入数据。**write()**可多次调用,**end()**只能被调用一次。

搭建HTTP服务

http模块提供了多种方式用于搭建HTTP服务
方式一

const http = require('http')

// 创建 Web 服务实例
const server = http.createServer()

// 为 服务器实例绑定 request 事件, 监听客户端请求
server.on('request', (req, res) => {
  res.end("Hello Node.js")
})

// 启动服务
server.listen(80, () => {
  console.log("Server is staring ...")
})

方式二

const http = require('http')

// 创建 Web 服务实例并监听客户端请求
http.createServer((req, res) => {
  res.end("Hello Node.js")
}).listen(80, () => {
  console.log("Server is staring ...")
})

方式三

const http = require('http')

// 创建 请求响应处理函数
function handle(req, res) {
  res.end("Hello Node.js")
}

http.createServer(handle).listen(80, () => {
  console.log("Server is staring ...")
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值