首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从头学习node之url

模块概述

nodejs中,提供了url这个非常实用的模块,用来做URL的解析。在做node服务端的开发时会经常用到。使用很简单,总共只有3个方法。

正式讲解前,各位同学先把下面这个图记在心上(来自nodejs官网),先对URL有一个直观的认识。

模块方法概述

url模块三个方法分别是:

.parse(urlString):将url字符串,解析成object,便于开发者进行操作。

.format(urlObj):.parse() 方法的反向操作。

.resove(from, to):以from作为起始地址,解析出完整的目标地址(还是看直接看例子好些)

url解析:url.parse()

完整语法:url.parse(urlString[, parseQueryString[, slashesDenoteHost]])

使用比较简单,几个要点备忘如下。

parseQueryString:(默认为false)如为false,则为未解析的字符串,比如,且对应的值不会decode;如果为true,则为object,比如,且值会被decode;

slashesDenoteHos:(默认为false)如果为true,那么类似里的就会被认为是;如果为false,则被认为是pathname的一部分。

关于解析得到的 urlObject ,会在下一小节进行详细介绍。

例子1:参数值不进行解析

代码如下:

输出如下:

例子2:对参数值进行decode

代码如下:

输出如下,对比上面的例子会发现,query字段被解析成了object,并且decode过。

例子3:针对路径 \/\/foo\/bar 的处理

代码如下:

输出如下,自行对比两者之间的差异:

关于urlObject

以上面的作为例子,粗略讲解下 。更多细节可参考官方文档。

protocol:协议,需要注意的是包含了,并且是小写的。

slashes:如果后面跟了两个,那么为true。

auth:认证信息,如果有密码,为,如果没有,则为。注意,这里区分大小写。

host:主机名。注意包含了端口,比如,并且是小写的。

hostname:主机名,不包含端口,并且是小写的。

hash:哈希部分,注意包含了。

search:查询字符串,注意,包含了,此外,值是没有经过decode的。

query:字符串 或者 对象。如果是字符串,则是去掉,其余一样;如果是对象,那么是decode过的。

path:路径部分,包含search部分。

pathname:路径部分,不包含search部分。

href:原始的地址。不过需要注意的是,、会被转成小写字母。

url拼接:url.format(urlObject)

完整语法:url.format(urlObject)

的反向操作,没什么好说的。 包含了很多字段,比如 、 、 等,且不一定需要全部传,所以有一套解析逻辑。

过程比较冗长,大部分时候不需要用到,直接贴官方文档的链接,有需要再看。

url.resolve(from, to)

用法比较简单,直接贴官方文档的例子

非法字符转义

url字符是有哥下面的字符会被转义(非法字符)

" ` \r \n \t { } \| \ ^ '

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G1F84V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券