HTTP模块是什么
http模块是node官方提供的,用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就可以把一台电脑变成一台web服务器,从而对外提供web资源服务
导入HTTP模块
const http = require('http')
监听主机和端口号
通过listen方法来开启服务器,并且在某一个主机和端口上监听网络请求
listen函数有三个参数:
端口port: 可以不传, 系统会默认分配端
主机host: 通常可以传入localhost、ip地址127.0.0.1,或者ip地址0.0.0.0,默认是0.0.0.0
回调函数:服务器启动成功时的回调函数
// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
console.log("服务器启动成功~");
});
response对象
返回响应结果
如果我们希望给客户端响应的结果数据,可以通过两种方式:
Write方法:这种方式是直接写出数据,但是并没有关闭流;
end方法:这种方式是写出最后的数据,并且写出后会关闭流;
const http = require('http');
const server = http.createServer((req, res) => {
// 响应数据的方式有两个:
res.write("Hello World");
res.write("Hello Response");
res.end("message end");
});
server.listen(8000, () => {
console.log("服务器启动🚀~")
});
返回状态码
设置状态码常见的有两种方式:
res.statusCode = 400;
res.writeHead(200);
响应头文件
返回头部信息,主要有两种方式:
res.setHeader:一次写入一个头部信息;
res.writeHead:同时写入header和status;
res.setHeader("Content-Type", "application/json;charset=utf8");
res.writeHead(200, {
"Content-Type": "application/json;charset=utf8"
})
request对象
在向服务器发送请求时,我们会携带很多信息如:
本次请求的URL,服务器需要根据不同的URL进行不同的处理
本次请求的请求方式,比如GET、POST请求传入的参数和处理的方式是不同的
本次请求的 headers 中也会携带一些信息,比如客户端信息、接受数据的格式、支持的编码格式等
这些信息,Node会帮助我们封装到一个request的对象中,我们可以直接来处理这个request对象
const http = require('http');
// 创建一个web服务器
const server = http.createServer((req, res) => {
// request对象中封装了客户端给我们服务器传递过来的所有信息
console.log(req.url);
console.log(req.method);
console.log(req.headers);
res.end("Hello Server");
});
// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
console.log("服务器启动成功~");
});
http发送网络请求
http.get("http://localhost:8000", (res) => {
res.on('data', data => {
console.log(data.toString());
console.log(JSON.parse(data.toString()));
})
});
发送post请求:
const req = http.request({
method: 'POST',
hostname: "localhost",
port: 8000
}, (res) => {
res.on('data', data => {
console.log(data.toString());
console.log(JSON.parse(data.toString()));
})
})
req.on('error', err => {
console.log(err);
})
req.end();