processing request nodejs

let http = require('http')
let fs = require('fs')
let url = require('url')
let querystring = require('querystring')
let app = http.createServer((req,res)=>{
    // 排除 /favicon.ico 的请求
    if(req.url.indexOf('/favicon.ico') === -1){

        // 判断要读取的是动态资源(接口api) 还是静态资源
        if(req.url.indexOf("/api") !== -1){   // 处理接口
            // 处理地址栏的数据
            //console.log(urlobj.query,true)   // 第二个参数写true打印出的结果  { a: '1', b: '2' }
            let urlobj = url.parse(req.url,true)   
            console.log(urlobj.query)   // 第二个参数不写打印出的结果  a=1&b=2
            // 非地址栏的数据   post请求
            let noAddressData = ''  //存放非地址栏的数据
            req.on('data',chunk=>{    //chunk 抓取的是一片数据,data事件内部会频繁非触发
                noAddressData += chunk   
            })

            req.on('end',()=>{
                // querystring  处理查询字符串  非地址栏的形式传参(比如post请求)
                // querystring.parse(参数)  将参数转成对象
                // querystring.stringfy(参数)   将参数转成字符串
                console.log('非地址栏的数据:',querystring.parse(noAddressData))
            })
        }else{
            // 处理静态资源
            try {
                let path = req.url === "/" ? "/index.html" : req.url;
                let html = fs.readFileSync("./www"+path)
                // 直接将HTML 返回给浏览器
                res.write(html)
            } catch (error) {
                let html = fs.readFileSync("./www/nopage.html")
                res.write(html)
                
            }
        }   
    }
    res.end()
})
app.listen(8000)   //监听的端口号  0~1024最好不要使用
Released seven original articles · won praise 0 · Views 66

Guess you like

Origin blog.csdn.net/weixin_46389498/article/details/104762404