nodeJs--http模块

本文介绍了Node.js内置的http模块,展示了如何利用http模块搭建一个简单的HTTP服务器,包括处理不同的请求路径和响应。同时,详细解释了http.Server的request事件及http.IncomingMessage和http.ServerResponse对象的使用,提供了两种创建服务器的方法。通过监听端口和处理请求响应,实现基本的网页内容展示。
摘要由CSDN通过智能技术生成


nodeJs的http模块是什么

传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,本身就可以用来构建服务器,而且http模块是由C++实现的,性能可靠。

如何搭建一个简单的http服务器

//引入node自带的模块 http  这个模块可以调用函数 来创建后端服务器
var http=require("http")
//创建一个服务器对象  回调函数不会直接运行 会在用户每次访问当前计算机的ip下的8081端口
var app=http.createServer((req,res)=>{		
	console.log(req.url) //用于调试代码的,显示用户输入的网址,为后面判断语句做铺垫
	if(req.url=="/home"){  //当用户输入的网址是/home时执行下面代码
		//配置返回给用户的数据包 的数据格式 和编码的类型utf8
		res.setHeader("content-Type","text/html;charset=utf8")
		//给前端最后一次发送数据包
		res.end("<h1>欢迎访问</h1>")//string  buffer
	}
	else if(req.url=="/login"){
		//配置返回给用户的数据包 的数据格式 和编码的类型utf8
		res.setHeader("content-Type","text/html;charset=utf8")
		//给前端最后一次发送数据包
		res.end("<h1>请登录</h1>")//string  buffer
	}
	else {
		//配置返回给用户的数据包 的数据格式 和编码的类型utf8
		res.setHeader("content-Type","text/html;charset=utf8")
		//给前端最后一次发送数据包
		res.end("<h1>网址错误  404 </h1>")//string  buffer
	}
})
//监听计算机的端口:一切需要联网通信的软件都会占用一个端口号·端口号的范围从0-65536之间,这里我监听的是8081端口
app.listen(8081)

在这里插入图片描述
小黑窗显示"_“就代表服务器运行成功了,然后输入http://本机ip地址:端口号后面输入要访问的网址比如”/home"
在这里插入图片描述
可见访问成功了,若输入我们没设置的网址则返回网址错误 404
在这里插入图片描述
在上述创建服务器代码中,createServer方法中的参数函数中的两个参数req和res则是分别代表了请求对象和响应对象。
其中req是http.IncomingMessage的实例,res是http.ServerResponse的实例;
用createServer创建服务器其是是一种简便的方法;
另一种创建服务器的方法是使用new创建一个http.Server对象 用on来绑定事件的方法,比如:

var http=require("http")
var app=new http.Server();
app.on('request',(req,res)=>{   //第一个参数填事件类型,第二个参数填回调函数
	//配置返回给用户的数据包的数据格式和编码类型
	res.setHeader("content-Type","text/html;charset=utf8")
    res.end('<h1>欢迎访问</h1>')
})
app.listen(8081)

http.Server的事件

http.Server提供的事件如下:
request:当客户端请求到来时,该事件被触发,提供两个参数req和res,表示请求和响应信息,是最常用的事件
connection:当TCP连接建立时,该事件被触发,提供一个参数socket,是net.Socket的实例
close:当服务器关闭时,触发事件(注意不是在用户断开连接时)

http.IncomingMessage(req)和http.ServerResponse(res)

http.IncomingMessage是HTTP请求的信息,一般由http.Server的request事件发送,并作为第一个参数传递,http请求一般可以分为两部分:请求头和请求体;其提供了3个事件,如下:

data:当请求体数据到来时,该事件被触发,该事件提供一个参数chunk,表示接受的数据,如果该事件没有被监听,则请求体会被抛弃,该事件可能会被调用多次(这与nodejs是异步的有关系)
end:当请求体数据传输完毕时,该事件会被触发,此后不会再有数据,相当于函数的return
close:用户当前请求结束时,该事件被触发,不同于end,如果用户强制终止了传输,也是用close

http.IncomingMessage(req)的属性有

属性名含义
httpVersionhttp协议版本,通常是"1.1"或"1.0"
method请求的方法,例如"GET"、"POST"等
statusCodhttp响应状态码
statusMessagehttp响应状态消息
headers请求头或响应头的对象
url发送http请求的客户端的url
complete客户端请求是否已经发送完成
trailersHTTP请求尾

http.ServerResponse是返回给客户端的信息,决定了用户最终看到的内容,一般也由http.Server的request事件发送,并作为第二个参数传递,它有三个重要的成员函数,用于返回响应头、响应内容以及结束请求

res.writeHead(statusCode,[heasers]):向请求的客户端发送响应头,该函数在一个请求中最多调用一次,如果不调用,则会自动生成一个响应头
res.write(data,[encoding]):想请求的客户端发送相应内容,data是一个buffer或者字符串,如果data是字符串,则需要制定编码方式,默认为utf-8,在res.end调用之前可以多次调用
res.end([data],[encoding]):结束响应,告知客户端所有发送已经结束,当所有要返回的内容发送完毕时,该函数必需被调用一次,两个可选参数与res.write()相同。如果不调用这个函数,客户端将用于处于等待状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H5_ljy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值