美文网首页
Node.js 关于HTML文档中的req.url理解

Node.js 关于HTML文档中的req.url理解

作者: JacobMa1996 | 来源:发表于2017-02-26 21:25 被阅读0次
    index.js
    var http = require('http'),
    fs = require('fs');
    var server = http.createServer(function(req,res){
        if(req.method == 'GET' && req.url.substr(0,7) == '/images' && req.url.substr(-4) == '.jpg'){
            fs.stat(__dirname + req.url,function(err,stats){
                if(err || !stats.isFile()){
                    res.writeHead(404);
                    res.end('Not Found');
                    return;
                }
                serve(__dirname + req.url,'application/jpg');
                console.log(req.url);
            });
        }else if(req.method == 'GET' && req.url == '/'){
            serve(__dirname + '/index.html','text/html');
            console.log(req.url);
        }else{
            res.writeHead(404);
            res.end('Not Found');
            console.log(req.url);
        }
    
        function serve(path,type){
            res.writeHead(200,{'Content-Type':type});
            fs.createReadStream(path).pipe(res);
        }
    });
    
    server.listen(3000);
    
    index.html
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    <h1>My webite</h1>
    <img src="/images/1.jpg">
    <img src="/images/2.jpg">
    <img src="/images/3.jpg">
    <img src="/images/4.jpg">
    </body>
    </html>
    
    目录
    directory.png
    cmd
    cmd.png

    访问127.0.0.1:3000,控制台输出 "" 后输出index.html各图片src,理解为请求html文档后,在文档中发现src继续请求服务器中目录,故在服务器文件index.js中符合第一个判断,并把文件的url赋值给Stream流(serve函数使用Stream流),在Stream流中,通过res响应输出文件。
    所以此过程中访问服务器5次,除去第一次访问,234次分别输出3张图,最后一次没有找到文件,返回函数。

    相关文章

      网友评论

          本文标题:Node.js 关于HTML文档中的req.url理解

          本文链接:https://www.haomeiwen.com/subject/wbrawttx.html