技术 | 妙用 Node.js 的 QueryStringURL 模块

1,234 阅读2分钟
原文链接: mp.weixin.qq.com

最近又开始耍Node.js了,虽然都在处理“请求”业务上,却也巧妙的使用了好几个Node.js的模块。今天想和大家分享一下QueryString和URL模块,如何妙用,还是很有意思的。

QueryString & URL 模块文档

nodejs.org/dist/latest…

nodejs.org/dist/latest…

我想,很多人使用Node.js除了写Cli工具之外,大部分都是在从事Web开发的工作,而Web开发有很多工作,与URL息息相关。很多参数,服务端的请求,很可能要处理URL的构造,参数等,于是,你能用到的就是这两个百分之百的官方模块了。

const url = require('url');
const querystring = require('querystring');

URL模块应该来说是最简单的一个,一起就三个方法:format,parse,resolve。

const urlObject = url.parse('https://github.com/icepy?d=1234/#id1234')

顾名思义parse可以将一个URL转换成一个Object,包含URL的大量信息。

既然能解析,那么通过这个对象,也能使用format来还原成string类型的URL地址。这个方法,对于我们要操纵URL时,提供了很便捷的方式,简简单单就能得到URL所包含的信息。而resolve方法主要来处理URL的路径,不过一般我们可以使用字符串拼接的方式直接处理URL了,但是,如果有一些其他情况,可能resolve会更适用一些。

url.resolve('/1234','/2')

大家猜一猜,最终会返回一个什么path?

QueryString查询字符串,主要是根据URL的传统定义“&”,“=”来序列化成JSON对象,提供的方法也不多,四个而已:escape,parse,stringify,unescape。

> querystring.parse(url.parse(u).search)
{ '?__biz': 'MjM5MTA1MjAxMQ==',
  mid: '503742076',
  idx: '2',
  sn: 'c6c73752ed7129f40b22d3ffad8a1c0c',
  scene: '19' }

最后给大家上一个关系图:

                        url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                       https://github.com/icepy?work=dingtalk&say=hello_dingtalk
                         ---          -----
                          |              |
                          |              |
           querystring(string)['work']   |
                                         |
                        querystring(string)['say']


更多精彩内容可关注我的个人微信公众号:搜索fed-talk或者扫描下列二维码,也欢迎您将它分享给自己的朋友。