关闭

Node.Js url模块详解

标签: node.jsURL模块
2525人阅读 评论(0) 收藏 举报
分类:
Node.Js  URL模块 
Node.Js中用户URL 格式化和反格式化模块

用于URL解析、处理等操作的解决方案

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

将url字符串转换成object对象

/**
 * urlStr:需要处理的url字符串
 * parseQueryString: 是否将查询参数也解析成对象
 *   为true时将使用查询模块分析查询字符串,默认为false
 * slashesDenoteHost: 解析主机处理,双斜线表示主机
 *  默认为false,//foo/bar 形式的字符串将被解释成 { pathname: ‘//foo/bar' }
 *  如果设置成true,//foo/bar 形式的字符串将被解释成  { host: ‘foo', pathname: ‘/bar' }
 */

实例1,仅指定url字符解析成对象

var url=require('url');
var url1='http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two';
var result=url.parse(url1);
// { protocol: 'http:',    //使用协议
//   slashes: true,        //
//   auth: null,		   // 验证信息
//   host: 'calc.gongjuji.net', //全小写的主机部分的URL,包括端口信息。
//   port: null,				//端口
//   hostname: 'calc.gongjuji.net',//小写的主机部分的主机
//   hash: '#one#two',			   //页面锚点参数部分
//   search: '?name=zhangsan&age=18',//查询参数部分,带?
//   query: 'name=zhangsan&age=18',  //查询参数部分
//   pathname: '/byte/',			 //目录部分
//   path: '/byte/?name=zhangsan&age=18',//目录+参数部分
//   href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'  //最初解析的完整的网址。双方的协议和主机是小写。
// }
//console.info(result);
实例2 ,指定是否解析参数部分成对象

//参数解析
var result2=url.parse(url1,true);
// { protocol: 'http:',
//   slashes: true,
//   auth: null,
//   host: 'calc.gongjuji.net',
//   port: null,
//   hostname: 'calc.gongjuji.net',
//   hash: '#one#two',
//   search: '?name=zhangsan&age=18',
//   query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
//   pathname: '/byte/',
//   path: '/byte/?name=zhangsan&age=18',
//   href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' }
//console.info(result2);
实例3,主机特殊解析

//双斜线表示主机
var url2='//www.gongjuji.net/byte/?name=zhangsan#one';
// { protocol: null,
//   slashes: true,
//   auth: null,
//   host: 'www.gongjuji.net',
//   port: null,
//   hostname: 'www.gongjuji.net',
//   hash: '#one',
//   search: '?name=zhangsan',
//   query: { name: 'zhangsan' },
//   pathname: '/byte/',
//   path: '/byte/?name=zhangsan',
//   href: '//www.gongjuji.net/byte/?name=zhangsan#one' }
var result3=url.parse(url2,true,true);
console.info(result3);
2.url.format(urlObj)  将json对象格式化成字符串

var url=require('url');
var obj1={ protocol: 'http:',    
  slashes: true,       
  auth: null,		  
  host: 'calc.gongjuji.net', 
  port: null,				
  hostname: 'calc.gongjuji.net',
  hash: '#one#two',			   
  search: '?name=zhangsan&age=18',
  query: 'name=zhangsan&age=18',  
  pathname: '/byte/',			 
  path: '/byte/?name=zhangsan&age=18',
  href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' 
};
var url1=url.format(obj1);
console.log(url1);//http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//请求参数为为json对象
var obj2={ protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' };
var url2=url.format(obj2);
console.log(url2); //http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//缺少参数的情况
var obj3={ protocol: null,
slashes: true,
auth: null,
host: 'www.gongjuji.net',
port: null,
hostname: 'www.gongjuji.net',
hash: '#one',
search: '?name=zhangsan',
query: { name: 'zhangsan' },
pathname: '/byte/',
path: '/byte/?name=zhangsan',
href: '//www.gongjuji.net/byte/?name=zhangsan#one' };
var url3=url.format(obj3);
console.log(url3);//www.gongjuji.net/byte/?name=zhangsan#one
3.url.resolve(from, to)  

返回从根目录指定到当前目录的绝对路径url
1.返回结果去除了参数和锚点
2.返回结果标准url路径格式

var url=require('url');
//指定相对路径
var url1=url.resolve('http://www.gongjuji.net/one/two/three','four');
console.log(url1); //http://www.gongjuji.net/one/two/four
//指定根目录的相对路径
var url3=url.resolve('http://www.gongjuji.net/one/two/three','/four');
console.log(url3); //http://www.gongjuji.net/four
//带参数的相对路径
var url2=url.resolve('http://www.gongjuji.net/one/two/three?name=zhangsan','four');
console.log(url2); //http://www.gongjuji.net/one/two/four
//非标准分隔符的原路径
var url4=url.resolve('http://www.gongjuji.net\\one#name1','/four');
console.log(url4);//http://www.gongjuji.net/four
//非标准分隔符的相对路径
var url5=url.resolve('http://www.gongjuji.net/one','\\two\\three');
console.log(url5);//http://www.gongjuji.net/two/three

0
0
查看评论

nodeJs之URL模块

//导入url模块 var url = require("url"); var urlString = "http://www.baidu.com/a/b"; //url的解析 var obj = url.parse(urlString); console...
  • my_study_everyday
  • my_study_everyday
  • 2016-10-18 19:19
  • 602

node.js 获取http url路径中的各个参数

若url为:     http://localhost:8888/select?name=a&id=5 http.createServer(function(request,response){ var pathname ...
  • cwallow
  • cwallow
  • 2013-01-29 18:02
  • 26815

Node.js中的URL模块

URL模块简介 该模块包含用以 URL 解析的实用函数 //调用URL模块 var url = require('url') 函数 url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 输入 URL 字符...
  • wozaixiaoximen
  • wozaixiaoximen
  • 2015-09-16 23:12
  • 2079

NodeJS解析url参数

var http = require('http'); var url = require('url'); http.createServer(function (request, response) { // 解析请求,包括文件名 var req...
  • hurryboylqs
  • hurryboylqs
  • 2017-04-25 17:41
  • 1180

NodeJS Connect URL重写中间件组件

NodeJS URL重写中间件组件 var connect = require("connect"); var url = require("url"); //先使用rewrite中间件组件基于缩略名重写URL,然后将控制权转交给showPost组件 var ...
  • xuexueenen
  • xuexueenen
  • 2016-02-11 15:31
  • 1237

url及node.js url模块随笔

在将url之前先附上一张图,对url的结构有个清晰的认识 这就是url清晰的组成。 接下来咱们来看一下在前端常常用到的方法 例如 var url = ‘https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=url%E6...
  • qq_36765732
  • qq_36765732
  • 2017-08-14 15:02
  • 66

Node.js url.parse()

url.parse()可以将一个完整的URL地址,分为很多部分,常用的有:host、port、pathname、path、query。var http = require("http"); var url = require("url");var server...
  • zhongshijun521
  • zhongshijun521
  • 2017-03-03 15:12
  • 1193

url模块的基本用法

parse函数的基础用法parse函数的作用是解析url,返回一个json格式的数组,请看如下示例var url = require('url');//加载url模块 url.parse('http://www.baidu.com');返回的结果为:{ protoco...
  • Vanhukseter
  • Vanhukseter
  • 2015-02-17 23:43
  • 2113

Node.js url.parse(url, parseQueryString, slashesDenoteHost) 详解

require(‘url’).parse(url, parseQueryString, slashesDenoteHost);默认情况url.parse(url)等价于url.parse(url, false, false);parseQueryString : 控制解析的 Url {……} 中的 ...
  • chy555chy
  • chy555chy
  • 2016-09-12 16:19
  • 844

理解Node模块(module)

在开发复杂Web应用的时候,通常需要把各个功能进行拆分、封装到不同的文件并在需要的时候引用该文件,即进行代码的模块化管理。几乎所有的编程语言都有自己的模块组织方式,比如Java中的包、C#中的程序集,而Node采用CommonJS模块规范。
  • hwhsong
  • hwhsong
  • 2016-07-29 12:04
  • 1565
    个人资料
    • 访问:1426003次
    • 积分:16053
    • 等级:
    • 排名:第794名
    • 原创:468篇
    • 转载:153篇
    • 译文:1篇
    • 评论:151条