Skip to content

四、http模块

http模块是Node.js官方提供的、用来创建Web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,变成一台Web服务器,从而对外提供Web资源服务

js
const http=require('http')

1、创建最基本的web服务器

1、创建web服务器的基本步骤

  • 导入http模块
  • 创建web服务器实例
  • 为服务器实例绑定request事件,监听客户端的请求
  • 启动服务器

1.步骤1-导入http模块

js
const http=require('http')

2.步骤2-创建web服务器实例

js
const server=http.createServer()
3.步骤3-为服务器实例绑定request事件
js
//使用服务器实例的.on方法,为服务器绑定一个request事件
server.on('request',(req,res)=>{
	//只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
	console.log('Someone visit our web server')
})

4.步骤4-启动服务器

js
//调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(8080,()=>{
	console.log('运行在8080端口!')
})

2、req请求对象

只要服务器接收到客户端的请求,就会调用server.on()为服务器绑定的request事件处理函数。

如果想在事件处理函数中,访问于客户端相关的数据或属性,可以使用如下的方式

js
server.on('request',(req)=>{
	//req是请求对象,它包含了于客户端相关的数据和属性,例如
	//req.url是客户端请求的url地址
	//req.method是客户端method请求类型
	const str=`你的请求路径是${req.url},请求方式是${req.method}`
	console.log(str)
})

3、res响应对象

在服务器的request事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式

js
server.on('request',(req,res)=>{
	//res是响应对象,它包含了与服务器相关的数据和属性,例如:要发送到客户端的字符串
	const str=`你的请求路径是${req.url},请求方式是${req.method}`
	//res.end()方法的作用
	//向客户端发送指定的内容,并结束这次请求的处理过程
	res.end(str)
})

4、解决中文乱码问题

当调用res.end()方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式

js
server.on('request',(req,res)=>{
	//发送的内容包含中文
	const str='你的请求路径是${req.url},请求方式是${req.method}'
	//为了防止中文显示乱码的问题,需要设置响应头Content-Type的值为text/html;charset=utf-8
	res.setHeader('Content-Type','text/html;charset=utf-8')
	//把包含中文的内容,响应给客户端
	res.end(str);
})