HTTP模块
网页程序是以上线作为最终目标,这就需要我们掌握http模块。
首先需要创建http模块。创建一个名为http.js的文件
//这个模块专门用来搭建服务 供客户端请求以及向客户端响应
const http = require('http');
模块创建好以后需要搭建服务
/*创建服务
当客户端向服务端发起请求时 就会触发回调函数
* 回调函数的参数
* req 请求体
* res 响应体
*
* */
var server = http.createServer(function(req,res){
console.log('有人连接了')
})
此时虽然服务搭建完成,但无法看到连接状态,我们可以使用
/*
server.listen(端口号,回调函数)
端口号的范围是 [0,65536)
当3000端口处的服务成功开启时 会自动触发
*
* */
server.listen(3000,function(){
console.log('3000端口成功运行')
})
来监测服务是否运行。运行文件,控制台输出3000端口成功运行证明服务开启成功。同时打开浏览器,输入localhost:3000,再检查控制台,可以发现控制台输出了 有人连接了 ,说明当服务器在浏览器端开始运行时,就会执行
var server = http.createServer(function(req,res){
})
中包含的代码。
在使用谷歌浏览器时,会输出两遍有人连接了,是因为谷歌浏览器对图标也会进行一次请求。其他浏览器不会出现这种情况
但当我们输入localhost:3000后会发现虽然我们服务开启成功打印出了3000端口已连接,但浏览器的状态一直是在转圈中,这是因为虽然发起了请求但没有数据返回,客户端一直处于等待状态。只要我们在请求代码中结束请求即可。
let server = http.createServer(function (req,res) {
console.log("somebody comein");
res.end()
})
res.end的作用就是结束响应。
同时我们可以使用res.write方法向页面返回一些数据
res.write('我是第一波数据') ;//服务端向客户端响应数据
重启服务并重新进入localhost:3000会发现不再转圈,页面出现了内容。但这个内容是乱码。造成这个问题的原因给服务器返回了中文的原因。要想返回中文,需要加上返回头
res.setHeader('content-type','text/html;charset=utf-8')
作用是 保证响应的数据不乱码