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

来源:互联网 发布:linux 更新软件 编辑:程序博客网 时间:2024/06/07 16:22
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张图,最后一次没有找到文件,返回函数。

0 0
原创粉丝点击