nodejs入门教程四:URL相关模块用法分析


Posted in NodeJs onApril 24, 2017

本文实例讲述了nodejs入门教程之URL相关模块用法。分享给大家供大家参考,具体如下:

1.URL 模块:用于 URL 处理与解析

1)URI 与 URL :

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate(定位)这个资源。

2)URL模块中的方法:

url.format(urlObject):将一个 url 对象转为一个 url字符串

url.parse(urlString,[Boolean],[Boolean]):将 url 字符串地址转为一个对象

第一个Boolean

true:则 query 属性总会通过 querystring 模块的 parse() 方法生成一个对象。
false:则返回的 URL 对象上的 query 属性会是一个未解析、未解码的字符串。
默认为 false

第二个Boolean

true:则 // 之后至下一个 / 之前的字符串会被解析作为 host。
例如,//foo/bar 会被解析为 {host: 'foo', pathname: '/bar'}
而不是 {pathname: '//foo/bar'}。
默认为 false

url.resolve(from,to):以一种 Web 浏览器解析超链接的方式把一个目标 URL 解析成相对于一个基础 URL。

var url = require('url');
var urlObject = url.parse('https://hao.360.cn/?src=lm&ls=n6624339d99');
console.log(urlObject);
var urlString = url.format({
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'hao.360.cn',
  port: null,
  hostname: 'hao.360.cn',
  hash: null,
  search: '?src=lm&ls=n6624339d99',
  query: 'src=lm&ls=n6624339d99',
  pathname: '/',
  path: '/?src=lm&ls=n6624339d99',
  href: 'https://hao.360.cn/?src=lm&ls=n6624339d99' })
console.log(urlString);

结果:

Url {
 protocol: 'https:',
 slashes: true,
 auth: null,
 host: 'hao.360.cn',
 port: null,
 hostname: 'hao.360.cn',
 hash: null,
 search: '?src=lm&ls=n6624339d99',
 query: 'src=lm&ls=n6624339d99',
 pathname: '/',
 path: '/?src=lm&ls=n6624339d99',
 href: 'https://hao.360.cn/?src=lm&ls=n6624339d99' }
https://hao.360.cn/?src=lm&ls=n6624339d99
var urlString2 = url.resolve('https://hao.360.cn/','?src=lm&ls=n6624339d99')
console.log(urlString) //https://hao.360.cn/?src=lm&ls=n6624339d99

2. querystring 模块:用于解析与格式化 URL 查询字符串

应用:针对于大量的参数传递的场景

querystring.escape(str):对给定的 str 执行 URL 百分号编码(转译)。

querystring.unescape(str):对给定的 str 上的 URL 百分号编码的字符执行解码(反转译)。

querystring.parse(str,[sep,[eq,[options]]]):方法能把一个 URL 查询字符串(str)解析成一个键值对的集合。

•str <String> 要解析的 URL 查询字符串。
•sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&'。
•eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '='。
•options <Object>
•decodeURIComponent <Function> 当解码查询字符串中百分号编码的字符时使用的函数。默认 querystring.unescape()。
•maxKeys <number> 指定要解析的键的最大数量。默认为 1000。指定为 0 则移除键数的限制

④  querystring.stringify(obj[, sep[, eq[, options]]]):通过遍历对象的自有属性,从一个给定的 obj 产生一个 URL 查询字符串。

•obj <Object> 要序列化成一个 URL 查询字符串的对象。
•sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&'。
•eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '='。
•options
•encodeURIComponent <Function> 当把对 URL 不安全的字符转换成查询字符串中的百分号编码时使用的函数。

默认为 querystring.escape()

var querystring = require('querystring');
var a = querystring.parse('src=lm&ls=n6624339d99');
console.log(a)  // { src: 'lm', ls: 'n6624339d99' }

3. http:计算机之间遵循的协议

nodejs入门教程四:URL相关模块用法分析

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 #NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 #NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 #NodeJs
nodejs 终端打印进度条实例代码
Apr 22 #NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 #NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 #NodeJs
解析NodeJS异步I/O的实现
Apr 13 #NodeJs
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php实现学生管理系统
2020/03/21 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
Javascript里使用Dom操作Xml
2006/09/20 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python 使用shutil复制图片的例子
2019/12/13 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python生成并处理uuid的实现方式
2020/03/03 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
大学生团员个人总结
2015/02/14 职场文书
听证会主持词
2015/07/03 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
python爬取豆瓣电影TOP250数据
2021/05/23 Python