node的url模块,path模块,querystring模块

如果一个URL比较完整,包括querystring部分(就是GET请求查询字符串部分),hash部分:

http://127.0.0.1:3000/b.html?id=123#123

此时req.url是:

b.html?id=123

也就是说,querystring属于req.url,但是hash不属于.
但是我们此时要得到文件名部分,我不想要querystring,此时可以用正则提炼,太麻烦.
此时Node中提供了内置模块:url,path,querystring,他们都可以服务于URL的识别
代码如下:

var http=require("http");
var fs=require("fs");
var url=require("url");
var path=require("path");
var querystring=require("querystring");

var server=http.createServer((req,res)=> {
	//统一设置一下header
	res.setHeader("Content-Type","text/html;charset=UTF-8;");
	
	//假设路径是http://127.0.0.1:3000/b.html?id=123&name=小明&sex=男#abc
	//注意看url.parse(),里面要不要true
	//转换对象
	var urljson=url.parse(req.url)
	console.log(urljson);
	//得到文件路径
	var pathname=urljson.pathname;
	//得到拓展名
	var extname=path.extname(pathname);
	//得到查询的字符串
	var qs=urljson.query;
	//转为查询对象,和url.parse加上true非常类似
	var qsjson=querystring.parse(qs);
	
	console.log(pathname);
	console.log(extname);
	console.log(qs);
	console.log(qsjson);
	
	res.end("");
});
server.listen(3000);

这是url.parse()加上true之后的效果,此时querystring部分将自动变成一个对象,方便我们存到数据库里.

注意:我们可以发现没有正确识别protocol协议,host主机名等等,因为我们是windows环境,确实有这个问题.

猜你喜欢

转载自blog.csdn.net/bhq1711617151/article/details/87984991