Node.js:http模块

157 阅读2分钟

http模块


客户端:网络节点中,负责消费资源的电脑
服务器:网络节点中,负责对外提供网络资源的电脑

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

服务器和普通电脑的区别在于,服务器安装了web服务器软件,例如:IIS,Apache
等,通过安装这些服务器软件,就能把一台普通的电脑变成一台web服务器

在Node.js文件中,我们不需要使用IIS,Apache等第三方web服务器软件。因为我们可以基于Node.js提供的http模块,通过代码,手写一个服务器软件,从而对外提供web服务

创建web服务器的基本步骤

1.导入http模块
2.创建web服务器实例
3.为服务器实例绑定request事件,监听客户端请求
4.启动服务器
const http = require('http')

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

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

//4.调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(80,()=>{
    console.log('http server running at http:127.0.0.1')
})

req对象

req是请求对象
功能:访问与客户端相关的数据或属性
req.url 是客户端请求的URL地址
req.method 是客户端的method请求类型
server.on('request',(req)=>{
    const str = `Your request url is ${req.url},and request method is ${req.method}`
    console.log(str)
})

res对象

res是响应对象
功能:访问与服务器相关的数据和属性
res.end():向服务器发送指定内容并结束这次请求的处理过程
res.setHeader:设置响应头信息
server.on('request',(req)=>{
    const str = `Your request url is ${req.url},and request method is ${req.method}`
    
    res.end(str) //将内容发送给客户端并结束此次请求
})

中文乱码问题

调用res.end()方法,向客户端发送中文内容时,会出现乱码问题,此时,需要手动设
置编码内容的编码格式
server.on('request',(req,res)=>{
//发送内容包含中文
const str = `您请求的url地址是${req.url},请求的method类型是${req.method}`
// 为了防止中文显示乱码的问题,需要设置响应头,Content-Type的值为text/html;charset=utf-8
res.setHeader('Content-type','text/html;charset=utf-8')
//把包含中文的内容,响应给客户端
res.end(str)
})