我们可以很简单的获取到请求的url,但有数据提交上来的url是十分复杂和不确定的。很不利于编写业务逻辑。所以我们就要将url拆分成我们能用的数据。node的url模块就是帮助我们对提交上来的url进行解析处理
parse(urlStr,queryString,AnalysisHost)
解析url,返回一个url属性对象
- urlStr: 要解析的url地址
- queryString: 解析出来的query是字符串还是查询对象,true是对象 false是字符串
- AnalysisHost: 是否要解析出来主机名
示例代码
var url = require('url')
var obj = url.parse('http://www.baidu.com/vdsa?ie=utf-8&word=sad',true,true)
console.log(obj);
结果:
Url组成部分:
- protocol:url的通信协议(http/https)
- slashes:如果协议protocol冒号后跟的是两个斜杠字符(/),那么值为true
- auth:URL的用户名与密码部分
- host:url的主机名 “baidu.com”
- port: 端口号
- hostname: hostname是host属性排除端口port之后的小写的主机名部分
- hash:哈希#后面字符串包括#
- search:URL的查询字符串部分,包括开头的问号字符(?)
- query: 不包含问号(?)的search字符串
- pathname:URL的整个路径部分。跟在host后面,截止问号(?)或者哈希字符(#)分隔
- path:由pathname与search组成的串接,不包含hash字符后面的东西
- href:解析后的完整的URL字符串,protocol和host都会被转换成小写。
url.format(urlObject)
将一个url对象格式化成url字符串
- urlObject:url对象
示例代码
var url = require('url') var obj = { protocol: 'http:', slashes: true, host: 'www.baidu.com', hostname: 'www.baidu.com', search: '?ie=utf-8&word=sad', query: { ie: 'utf-8', word: 'sad' }, pathname: '/vdsa' } console.log(url.format(obj));
结果:
url.resolve(from,to)
用来插入或替换URL内容
- from 源地址
- to 需要添加或替换的标签
示例代码
const url = require("url");
console.log(url.resolve("/one/two/three","four"));
console.log(url.resolve("/one/two/","four"));
console.log(url.resolve("http://www.baidu.com","/topic"));
console.log(url.resolve("http://www.baidu.com/one","topic"));