Node.js url模块

url模块

这里写图片描述

URL各部分说明

例如:
http://user:pass@host.com:8080/p/a/t/h?query=string#hash
解析后对象字段如下:
这里写图片描述

  • href: 解析前的完整原始 URL,协议名和主机名已转为小写 例如:
    http://user:pass@host.com:8080/p/a/t/h?query=string#hash
  • protocol: 请求协议,小写 例如: ‘http:’
  • slashes: 协议的“:”号后是否有“/” 例如: true or false
  • host: URL主机名,包括端口信息,小写 例如: ‘host.com:8080’
  • auth: URL中的认证信息 例如: ‘user:pass’
  • hostname: 主机名,小写 例如: ‘host.com’
  • port: 主机的端口号 例如: ‘8080’
  • pathname: URL中路径 例如: ‘/p/a/t/h’
  • search: 查询对象,即:queryString,包括之前的问号“?” 例如: ‘?query=string’
  • path: pathname 和 search的合集 例如: ‘/p/a/t/h?query=string’
  • query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象 例如:
    ‘query=string’ or {‘query’:’string’}
  • hash: 锚点部分(即:“#”及其后的部分) 例如: ‘#hash’

url.parse(url)将url字符串转化为Json对象

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])

应用实例:
默认情况url.parse(url)等价于url.parse(url, false, false);

var url = require('url');

var urlString = 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash';
var result = url.parse(urlString);
console.log(result);

这里写图片描述

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])的第二个可选参数parseQueryString,
如果设置为true时,会使用querystring模块来解析URL中的查询字符串部分,默认为 false。
parseQueryString : 控制解析的 Url {……} 中的 query 字段的值是否为 JSON格式,还是普通字符串格式。

实例如下:

var url = require('url');

var urlString = 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash';
var result = url.parse(urlString,true);
console.log(result);

结果如下:
这里写图片描述

通过第二个可选参数,可以很清楚的看到两者的区别:
这里写图片描述
将第二个可选参数设置为true,会使用querystring模块来解析URL中的查询字符串部分。

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])的第三个可选参数slashesDenoteHost默认为false
slashesDenoteHost : 当url是 ‘http://’ 或 ‘ftp://’ 等标志的协议前缀打头的,或直接以地址打头,
如 ‘127.0.0.1’ 或 ‘localhost’ 时候是没有区别的;当且仅当以2个斜杠打头的时候,比如 ‘//127.0.0.1’ 才有区别。
这时候,如果其值为true,则第一个单个 ‘/’ 之前的部分被解析为 ‘host’ 和 ‘hostname’,
如 ” host : ‘127.0.0.1’ “,如果为false,包括2个反斜杠在内的所有字符串被解析为pathname。
var url = require('url');

var urlString = '//host/path';
var result = url.parse(urlString,true,false);
console.log(result);

这里写图片描述

var url = require('url');

var urlString = '//host/path';
var result = url.parse(urlString,true,true);
console.log(result);

这里写图片描述

url.format(urlObj)将对象格式化为URL字符串

实例如下:

var url = require('url');

var urlObj = {
  protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'hosst.com:8080',
  port: '8080',
  hostname: 'hosst.com',
  hash: '#hash',
  search: '?query=string',
  query: 'query=string',
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?query=string',
  href: 'http://user:pass@hosst.com:8080/p/a/t/h?query=string#hash' 
}

var result = url.format(urlObj);
console.log(result);

/*
*传入的URL对象会做以下处理:
*
*href 属性会被忽略
*protocol无论是否有末尾的 : (冒号),会同样的处理
*这些协议包括 http, https, ftp, gopher, file 后缀是 :// (冒号-斜杠-斜杠).
*所有其他的协议如 mailto, xmpp, aim, sftp, foo, 等 会加上后缀 : (冒号)
*auth 如果有将会出现.
*hostname 如果 host 属性没被定义,则会使用此属性.
*port 如果 host 属性没被定义,则会使用此属性.
*host 优先使用,将会替代 hostname 和port
*pathname 将会同样处理无论结尾是否有/ (斜杠)
*search 将会替代 query属性
*query (object类型; 详细请看 querystring) 如果没有 search,将会使用此属性.
*search 无论前面是否有 ? (问号),都会同样的处理
*hash无论前面是否有# (井号, 锚点),都会同样处理
*/

这里写图片描述

URL路径处理:url.resolve(from, to)

url.resolve()方法用于处理URL路径,也可以用于处理锚点。示例如下:

var url = require('url');
console.log(url.resolve('/one/two/three', 'four'));    
console.log(url.resolve('http://example.com/', '/one'));
console.log(url.resolve('http://example.com/one', '/two'));

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值