搭建一个静态的web服务器&&给静态web服务器上添加get、post路由

"本文介绍了如何使用Node.js搭建一个静态Web服务器,并实现GET和POST路由。在main.js中,通过http模块创建服务器,读取并处理静态文件。同时,通过extName.js模块对文件后缀进行检查,根据文件类型设置Content-Type。对于GET请求,服务器会读取指定路径的文件。而对于POST请求,服务器接收数据并在"data"和"end"事件中处理。"
摘要由CSDN通过智能技术生成

搭建一个静态的web服务器&&给静态web服务器上添加get、post路由

一、搭建一个静态的web服务器

  • main.js
// 搭建一个静态的web服务器
// 页面文件处理的问题
// 先创建服务器
const http=require("http");
const url=require("url");
const fs=require("fs");
const path=require("path");
// 加载自定义模块
const extName=require("extName");
let host="localhost";
let port=8080;
let app=http.createServer((req,res)=>{
   let pathName=url.parse(req.url).pathname;
   if(pathName!="/favicon.ico"){
       // 加载首页
       if(pathName=="/")
       {
           pathName="index.html";
       }
       // 进行文件读取
       console.log();
       fs.readFile(`${__dirname}/view/${pathName}`,(err,buffer)=>{
           if(err)
           {
               throw err;
           }
           // 读取到的数据
           // 对每个文件进行文件后缀检测
           let ext=path.extname(pathName);
           extName.check(ext).then((result)=>{
               res.writeHead(200,{"Content-Type":`${result};charset=utf-8`});
               res.write(buffer);
               res.end();
           });            
       });
   }
});
// 监听端口
app.listen(port,host,()=>{
   console.log(`http://${host}:${port}`);
});
  • extName.js
const fs=require("fs");
let obj={
   check(args){
       return new Promise((resolve,reject)=>{
           fs.readFile(`${__dirname}/mime.json`,(err,buffer)=>{
               if(err)
               {
                   throw err;
               }
               let json=JSON.parse(buffer.toString());
               resolve(json[args]);
           });
       })
   }
}
module.exports=obj;

二、给静态web服务器上添加get、post路由

let app=http.createServer((req,res)=>{   
   let method=req.method;                                                                                                                         
   let pathName=url.parse(req.url).pathname;
   if(pathName!="/favicon.ico"){
       if(method==="GET")
       {
           // 检测当前路径是否存在值
           let params=url.parse(req.url,true).query;//get传值解析json
           // 加载首页
           if(pathName=="/")
           {
               pathName="index.html";
           }
           // 路经检测
           fs.exists(req.url,(bool)=>{
               if(bool){
                   console.log("只能是get请求",params);
               }
               
           });
           // 正常加载界面
           // 进行文件读取
           fs.readFile(`${__dirname}/view/${pathName}`,(err,buffer)=>{
               if(err)
               {
                   throw err;
               }
               // 读取到的数据
               // 对每个文件进行文件后缀检测
               let ext=path.extname(pathName);
               extName.check(ext).then((result)=>{
                   res.writeHead(200,{"Content-Type":`${result};charset=utf-8`});
                   res.write(buffer);
                   res.end();
               });
           });
       }
       else{
           // POST
           let info='?';
           res.on("data",(info)=>{
               info+=data;
           });
           res.on("end",()=>{
               console.log(info);
           });
       }
   }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南初️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值