1、http模块
用于构建使用http协议的客户端应用或者服务器端应用
创建并发起请求消息,等待并解析响应消息————实现web客户端
接收并解析请求消息,构建并发送响应消息————实现web服务器端
常用对象:
http.ClientRequest
http.Server
http.ServerResponse
http.IncomingMessage
常用方法:
http:createServer()
http.get()
http.request()
1.http.request
http.request是一个HTTP客户端工具
用于向web服务器发起一个http请求,并获取响应数据
有两个主要方法:
http.get()
http.request()
该方法返回一个http.ClientRequest对象,用来描述请求信息,回调函数的参数是一个http.IncomingMessage,封装着响应信息。
http.ClientRequest对象常用方法:
write():向服务器追加请求主体数据
end():提交请求消息主体结束
setTimeout():设置请求消息超时时间
abort():终止请求
http.ClientRequest对象常用事件:
response:接收到响应消息
abort:请求终止事件
error:请求发生错误
注意:使用get()方法不需要手动调用end()方法,使用request()的时候,必须手动调用end()方法。
2、http.server
http.server是一个基于事件的http服务器
用于创建web服务器,接收客户端请求,返回响应消息。所有的请求都被封装到独立的事件当中,我们只需对它的事件编写响应的处理程序,就可用实现http服务器的所有功能。
方法:http.createServer()
用于创建web服务器应用,可以接收客户端请求,并返回响应消息。
该方法的返回值是一个http.Server对象
http.Server对象的常用方法:
listen():启动服务器,监听指定的服务端口
close():停止服务器的运行
setTimeout():设置服务器的响应消息超时时间
http.Server对象的常用事件:
connection:出现客户端连接
request:接收到请求消息
close:服务器停止事件
error:响应发生错误
http.Server对象的request事件回调函数中有两个参数
第一个参数,是一个http.IncomingMessage对象,封装着客户端提交的请求消息数据。
第二个参数:是一个http.ServerResponse对象,用于构建向客户端输出的响应消息数据。
//创建一个简单的web服务器---没有给客户端响应
//引入http模块
var http=require("http");
//使用http模块创建web服务器
var server=http.createServer();
//为服务器的requestZ事件绑定处理函数
server.on("request",function (req,res) {
console.log("web服务器接收到一个请求。。。");
console.log(`请求方法:${req.method}`);
console.log(`请求url:${req.url}`);
console.log(`请求版本:${req.httpVersion}`);
console.log(`请求头:`);
console.log(req.headers);
});
//启动web服务器,监听指定端口
server.listen(8000,'127.0.0.1',(err)=>{
if(err){
console.log("web服务器启动失败,错误消息为:");
console.log(err);
}else{
console.log("服务器启动成功,正在监听8000端口");
}
});
/*创建web服务器,给客户端一个固定响应*/
//引入http模块
var http=require("http");
//创建web服务器
var server = http.createServer();
//为http.Server的request事件绑定处理函数
server.on("request",(req,res)=>{
console.log("web服务器接收到一个请求。。。");
res.statusCode=200;//设置响应状态码
res.setHeader("Content-Type","text/html;charset=utf-8");//设置响应消息头部
res.write("<html>");//向客户端输出的响应主体内容
res.write("<head>欢迎访问我的页面</head>");
res.write("</html>");
res.end();//响应主体内容完毕,向客户端发送响应
});
//启动web服务器,监听指定端口
server.listen(8000,"127.0.0.1",(err)=>{
if(err){
console.log("服务器启动失败");
}else{
console.log("服务器启动成功,正在监听端口");
}
})
2、MySQL模块(可以联系java中的类比学习)
方法:
createConnection() //创建一个mysql服务器的连接
该方法返回一个连接对象,该对象有以下常用方法:
connect() //连接数据库
query() //提交SQL语句给MySQL服务器执行
end() //断开与MySQL服务器的连接
3、express模块
express是在connect模块基础上进行封装的
功能:可以方便的实现服务器的路由、发送和接收http请求,返回响应、发送和接收cookie以及实现模板引擎功能。
app.method(path,[middleware,]function(req,res){})
中间件
var express=require("express");
//对express进行实例,作为http服务器
var app=express();
//启动express服务器,监听8002端口
app.listen(8002);
app.get("/",(req,res)=>{
res.send("您访问的是根目录");
});
//使用正则匹配
app.get(/\/log/,(req,res)=>{
res.send("您访问的是log目录");
})