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

12 篇文章 0 订阅

如果一个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环境,确实有这个问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值