http 模块
2021年12月18日大约 2 分钟
http 模块
创建 web 服务器的模块
IP 地址
每台计算机的唯一地址
IP 地址一般采用点分十进制
格式为 (a, b, c, d),a、b、c、d 都是 0~255 之间的整数
本机地址的 IP 地址:127.0.0.1
域名
IP 地址的别名
IP 地址与域名的对应关系存储在一台服务器上,这台服务器就是域名服务器(DNS)
本机地址的域名:localhost
端口号
端口号就相当于一栋大厦的房间号,电脑就是这栋大厦
每台电脑都有成千上万的端口
每个端口都只能被一个 WEB 服务器占用
80 端口可以被省略
创建服务器
步骤
- 导入 http 模块
const http = require("http");
- 创建 WEB 服务器实例
const server = http.createServer();
- 为服务器实例绑定 request 事件,监听客户端请求
server.on("request", (req, res) => {});
- 启动服务器
server.listen(8080, () => {});
参数
req:访问与客户端相关的数据和属性
- url:客户端访问的路径
- method:客户端请求的 method 类型
- headers:获取请求头对象
res:访问与服务器相关的数据和属性
end(str):向客户端发送指定的内容,并接受这次请求的处理过程
只能返回 String 或 Buffer 类型数据
writeHeader:自定义回应头信息
res.writeHeader(404, "Not found", { "Content-Type": "text/html; charset=utf-8", });
setHeader:设置响应头 > 处理中文乱码
res.setHeader('Content-Type','text/html; charset=utf-8
write:给客户端发送响应数据
res.write("Hello World!");
搭建服务器读取文件
const http = require("http");
const path = require("path");
const fs = require("fs");
const server = http.createServer();
server.on("request", (req, res) => {
res.setHeader("Content-Type", "text/html;charset=utf-8");
const url = req.url;
const fpath = path.join(__dirname, url);
fs.readFile(fpath, (err, dataStr) => {
console.log(err, dataStr);
if (err) {
return res.end("404 Not found");
} else {
return res.end(dataStr);
}
});
});
server.listen(4050, () => {});
//引入
var http = require("http");
var fs = require("fs");
//创建服务器
var server = http.createServer();
var flieDir = "E:/Profession/project/WWW/Dome";
//响应
server.on("request", function (req, res) {
//读取访问文件
fs.readFile("../index.html", function (err, data) {
if (err) {
return res.end("404 Not Found!");
} else {
fs.readdir(flieDir, function (err, files) {
if (err) {
return res.end("读取发生错误!");
} else {
var content = "";
//遍历循环文件夹中的内容
files.forEach(function (item) {
//生成需要替换的内容
content += `
<tr>
<td data-value="css/">
<a class="icon dir" href="/E:/Profession/project/WWW/Dome/css/">${item}</a>
</td>
<td class="detailsColumn" data-value="0"></td>
<td class="detailsColumn" data-value="1576119370">2019/12/12 上午10:56:10</td>
</tr>
`; //在 es6 中可以用 ${} 来引用变量
});
// console.log(files);
data = data.toString();
//替换
data = data.replace("^_^", content);
//发生响应
res.end(data);
}
});
}
});
});
//启动服务器
server.listen(8080, function () {
console.log("Server is Running");
});