- 创建服务对象:
http.createServer((req,res)=>{...})
const http = require("http");
const url = require("url");
const fs = require("fs");
http.createServer((req, res) => {
if (req.url !== "/favicon.ico") {
if (req.url.includes("/api")) {
apiHandle(req, res);
} else {
fileHandle(req, res);
}
}
}).listen(3000, () => {
console.log("服务器开启成功,地址为:http://localhost:3000");
})
- 挂载端口:
对象.listen(端口号,)
- 获取请求对象
function fileHandle(req, res){
const p = url.parse(req.url).pathname;
fs.readFile("./www"+p, (err, data)=>{
if(err){
res.write("404");
}else{
res.write(data);
}
res.end();
})
}
function apiHandle(req, res) {
if (req.method === "GET") {
const data = url.parse(req.url, true).query;
routerHandle(req, res, data);
} else if (req.method === "POST") {
let str = "";
req.on("data", (chunk) => {
str += chunk;
});
req.on("end", () => {
const data = dataParse(str);
routerHandle(req, res, data);
})
}
}
- 绑定事件
- 数据:
req.on("data",()=>{})
- 数据接收:
req.on("end",()=>{})
- 获取相应对象
function dataParse(str) {
const obj = {};
str.split("&").forEach(val => {
obj[val.split("=")[0]] = val.split("=")[1];
})
return obj;
}
- 能响应静态资源的简易web服务器
function routerHandle(req, res, data) {
switch (data.type) {
case "login":
login(req, res, data)
break;
case "register":
console.log("注册");
break;
default:
console.log("功能不存在");
}
res.end();
}
function login(req, res, data) {
console.log("登录");
res.end();
}