nodejs中转换URL字符串与查询字符串详解

 更新时间:2014年11月26日 11:57:43   投稿:hebedich  
这篇文章主要介绍了nodejs中转换URL字符串与查询字符串详解,需要的朋友可以参考下

一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串.

可以使用Query String模块中的parse方法将该字符串转换为一个对象,parse方法的使用方式如下所示:

querystring.parse(str,[sep],[eq],[options]);

str表示被转换的查询字符串,

sep.字符串中的分隔符,默认是&

eq.该字符串中的分配符,默认为=."="左边是key,右边是value

options:是一个对象,可以在该对象中使用一个整数值类型的maxKeys属性来指定转换后的对象中的属性个数,如果将maxKeys属性值设定为0.其效果等于不使用maxKeys属性值

复制代码 代码如下:

 var querystring=require("querystring");
 var str="username=guoyansi&age=40&sex=male";
 var res=querystring.parse(str);
 console.log("1:%j",res);//1:{"username":"guoyansi","age":"40","sex":"male"}
 res=querystring.parse(str,"!");
 console.log("2:%j",res);//2:{"username":"guoyansi&age=40&sex=male"}
 res=querystring.parse(str,"&");
 console.log("3:%j",res);//3:{"username":"guoyansi","age":"40","sex":"male"}
 str="username=guoyansi!age=40!sex=male";
 res=querystring.parse(str,"!");
 console.log("4:%j",res);//4:{"username":"guoyansi","age":"40","sex":"male"}
 res=querystring.parse(str,"!","=");
 console.log("5:%j",res);//5:{"username":"guoyansi","age":"40","sex":"male"}
 res=querystring.parse(str,"!",":");
 console.log("6:%j",res);//6:{"username=guoyansi":"","age=40":"","sex=male":""}
 res=querystring.parse(str,"!","=",{maxKeys:2});
 console.log("7:%j",res);//7:{"username":"guoyansi","age":"40"}

stringify是将字符串转化成查询字符串的格式.

querystring.stringify(obj,[sep],[eq])

复制代码 代码如下:

 var querystring=require("querystring");
 var res= querystring.stringify({"username":"guoyansi","age":"40","sex":"male"});
 console.log(res);//username=guoyansi&age=40&sex=male
 res=querystring.stringify({"username":"guoyansi","age":"40","sex":"male"},"!");
 console.log(res);//username=guoyansi!age=40!sex=male
 res=querystring.stringify({"username":"guoyansi","age":"40","sex":"male"},"&",":");
 console.log(res);//username:guoyansi&age:40&sex:male
 res=querystring.stringify({"username":"guoyansi","age":["40","24"]},"&","=");
 console.log(res);//username=guoyansi&age=40&age=24

在url模块中,可以使用parse()方法将URL字符串转换为一个对象,根据URL字符串中的不同内容,该对象可能具有的属性及其含义如下.

href:被转换的原URL字符串.
protocol:客户端发出请求时使用的协议.
slashes:在协议与路径中间时候使用"//"分隔符.
host:URL字符串中的完整地址及端口号,该地址可能为一个IP地址,也可能为一个主机名.
auth:URL字符串中的认证信息部分.
hostname:URL字符串中的完整地址,该地址可能为一个IP地址,也可能为一个主机名.
search:Url字符串中的查询字符串,包含起始字符"?"
path:url字符串中的路径,包含查询字符串.
query:url字符串中的查询字符串,不包含起始字符"?",或根据该查询字符串而转换的对象(根据parse()方法所用参数而决定query属性值);
hash:url字符串中的散列字符串,包含起始字符"#".
 
url.parse(urlstr,[parseQueryString]);
urlStr:是需要转换的URL字符串,
parseQueryString:是一个布尔值,当参数为true时,内部使用querystring模块查询字符串转换为一个对象,参数值为false时不执行该转换操作,默认是false

复制代码 代码如下:

 var url=require("url");
 var str="http://user:pass@host,com:8080/users/user.php?username=sisi&age=24&sex=male#name1";
 var res=url.parse(str);
 console.log(res);

复制代码 代码如下:

{ protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host:8080',
  port: '8080',
  hostname: 'host',
  hash: '#name1',
  search: '?username=sisi&age=24&sex=male',
  query: 'username=sisi&age=24&sex=male',
  pathname: '/,com/users/user.php',
  path: '/,com/users/user.php?username=sisi&age=24&sex=male',
  href: 'http://user:pass@host:8080/,com/users/user.php?username=sisi&age=24&sex=male#name1' }

复制代码 代码如下:

 var url=require("url");
 var str="http://user:pass@host,com:8080/users/user.php?username=sisi&age=24&sex=male#name1";
 var res=url.parse(str,true);
 console.log(res);

复制代码 代码如下:

{ protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host:8080',
  port: '8080',
  hostname: 'host',
  hash: '#name1',
  search: '?username=sisi&age=24&sex=male',
  query: { username: 'sisi', age: '24', sex: 'male' },
  pathname: '/,com/users/user.php',
  path: '/,com/users/user.php?username=sisi&age=24&sex=male',
  href: 'http://user:pass@host:8080/,com/users/user.php?username=sisi&age=24&sex=male#name1' }

第一个例子和第二个例子不同之处在于parse的第二个参数,导致了结果中的query的不同

可以将一个url转换过的对象转换成一个url字符串.

复制代码 代码如下:

 var url=require("url");
 var str="http://user:pass@host,com:8080/users/user.php?username=sisi&age=24&sex=male#name1";
 var res=url.parse(str,true);
 console.log(url.format(res));

结果是:

http://user:pass@host:8080/,com/users/user.php?username=sisi&age=24&sex=male#name1

以上就是node中转换URL字符串与查询字符串的全部内容了,好好研究下,其实挺简单的。

相关文章

  • 卸载安装Node.js与npm过程详解

    卸载安装Node.js与npm过程详解

    这篇文章是根据自己的经验及实际操作介绍nodejs和npm的卸载及安装,相信对很多人会有帮助,有需要的可以参考学习。
    2016-08-08
  • window10下node使用管理神器NVM安装配置超详细步骤

    window10下node使用管理神器NVM安装配置超详细步骤

    nvm全称Node Version Manager是 Nodejs 版本管理器,它让我们能方便的对 Nodejs 的版本进行切换,nvm 的官方版本只支持 Linux 和 Mac, Windows 用户,可以用 nvm-windows,这篇文章主要介绍了window10下node使用管理神器NVM安装配置超详细步骤,需要的朋友可以参考下
    2023-01-01
  • Node.JS更改Windows注册表Regedit的方法小结

    Node.JS更改Windows注册表Regedit的方法小结

    注册表是windows操作系统中的一个核心数据库,这里介绍一些通过node.js操作注册表的几种方法,感兴趣的朋友参考下吧
    2017-08-08
  • 使用Nodejs 实现一个简单的 Redis客户端(推荐)

    使用Nodejs 实现一个简单的 Redis客户端(推荐)

    在nodejs中支持TCP连接的是net模块, 其中使用createConnection(config)或者直接new Socket(config)来初始化一个TCP连接,这篇文章主要介绍了用Nodejs 实现一个简单的 Redis客户端,需要的朋友可以参考下
    2022-11-11
  • Windows下Node爬虫神器Puppeteer安装记

    Windows下Node爬虫神器Puppeteer安装记

    这篇文章主要介绍了Windows下Node爬虫神器Puppeteer安装记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 深入理解Node.js 事件循环和回调函数

    深入理解Node.js 事件循环和回调函数

    这篇文章主要介绍了深入理解Node.js 事件循环和回调函数,详细的介绍Node.js 事件循环和Node.js回调函数,需要学习的可以参考一下。
    2016-11-11
  • 详解用Node.js写一个简单的命令行工具

    详解用Node.js写一个简单的命令行工具

    本篇文章主要介绍了详解用Node.js写一个简单的命令行工具,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 详解Node.js读写中文内容文件操作

    详解Node.js读写中文内容文件操作

    在本篇文章中我们给大家分享了关于Node.js读写中文内容文件操作的相关知识点内容,有需要的朋友们可以学习下。
    2018-10-10
  • Node.js在child_process域和错误冒泡及捕获实践

    Node.js在child_process域和错误冒泡及捕获实践

    这篇文章主要为大家介绍了Node.js在child_process域和错误冒泡及捕获实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Node.js中Playwright库使用指南

    Node.js中Playwright库使用指南

    Playwright 是微软开源的一个用于 Web 测试和自动化的Node.js 库,通过一个 API,可以自动化运行在Chrome,Edge、Firefox和Safari等浏览器上,下面我们就来看看它的具体使用吧
    2024-11-11

最新评论