nodeJS---URL相关模块用法(url和querystring)

一: URL模块:

URL模块用于解析和处理URL的字符串,提供了如下三个方法:

1. parse
2. format
3. resolve

1.1 url.parse(urlString); 将url字符串地址转为一个对象。

如下代码:

const url = require('url');
const urlString = url.parse('http://www.nodejs.org/some/url/?with=query&param=that#about'); console.log(urlString); 输出如下:
// 输出:
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.nodejs.org',
port: null,
hostname: 'www.nodejs.org',
hash: '#about',
search: '?with=query&param=that',
query: 'with=query&param=that',
pathname: '/some/url/',
path: '/some/url/?with=query&param=that',
href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
}

protocal: url协议
auth: 用户认证
host: 主机
port: 端口
hostname: 主机名
hash: 片段部分,也就是URL#之后的部分
search: url中HTTP GET的信息,包含了 ?
query: 和 search一样,但是不包含 ?
pathname: 跟在host之后的整个文件路径。但是不包含 ? 及 ?之后的字符串。
path: 和pathname一样,但是包含 ? 及之后的字符串,但是不包含hash
href: 原始的url

1.2 format方法。
format方法与parse方法相反,用于根据某个对象生成URL的字符串。
比如如下代码:

const url = require('url');

var urlObj = {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.nodejs.org',
port: null,
hostname: 'www.nodejs.org',
hash: '#about',
search: '?with=query&param=that',
query: 'with=query&param=that',
pathname: '/some/url/',
path: '/some/url/?with=query&param=that',
href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
};
console.log(url.format(urlObj));

最后输出:http://www.nodejs.org/some/url/?with=query&param=that#about

1.3 resolve方法

resolve(from, to) 方法用于拼接URL, 它根据相对URL拼接成新的URL;

如下代码:

const url = require('url');

var str1 = url.resolve('/one/two/three', 'four');

console.log(str1); // 输出 /one/two/four

const str2 = url.resolve('http://www.baidu.com', 'four');
console.log(str2); // 输出 http://www.baidu.com/four const str3 = url.resolve('http://www.baidu.com/', '/four');
console.log(str3); // 输出 http://www.baidu.com/four const str4 = url.resolve('http://www.baidu.com/one/', '/four');
console.log(str4); // 输出 http://www.baidu.com/four

二: querystring模块
它用于解析与格式化url查询字符串。
它提供了四个方法,分别是:querystring.parse, querystring.stringify, querystring.escape和querystring.unescape;

2.1 querystring.parse(string, separator, eq, options);
该方法是将一个字符串反序列化为一个对象。

string: 指需要反序列化的字符串。
separator(可选): 指用于分割字符串string的字符,默认为 &;
eq(可选): 指用于划分键和值的字符和字符串,默认值为 "=";
options(可选): 该参数是一个对象,里面可设置 maxKeys 和 decodeURIComponent 这两个属性。

maxKeys: 传入一个nmuber类型,指定解析键值对的最大值,默认值为1000, 如果设置为0,则取消解析的数量限制。

decodeURIComponent: 传入一个function, 用于对含有特殊字符进行编码。

如下代码:

const url = require('url');
const querystring = require('querystring');
const urlString = url.parse('http://www.nodejs.org/some/url/?with=query&param=that#about'); console.log(urlString);
/*
{
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.nodejs.org',
port: null,
hostname: 'www.nodejs.org',
hash: '#about',
search: '?with=query&param=that',
query: 'with=query&param=that',
pathname: '/some/url/',
path: '/some/url/?with=query&param=that',
href: 'http://www.nodejs.org/some/url/?with=query&param=that#about' }
}
*/
const str = querystring.parse(urlString.query);
console.log(str);
/*
返回
{ with: 'query', param: 'that' }
*/

// 如果是以井号隔开的话,那么使用后面的参数
const char = "with=query#param=that";
// 输出 { with: 'query', param: 'that' }
const str2 = querystring.parse(char, '#', null, {maxKeys: 2});

2.2 querystring.stringify(obj, separator, eq, options);
该方法是将一个对象序列化成一个字符串。

参数:obj指需要序列化的对象;
separator(可选),用于连接键值对的字符或字符串,默认为 &;
eq(可选),用于连接键和值的字符或字符串,默认值为 "=";
options(可选),传入一个对象,该对象设置 encodeURIComponent这个属性;
encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()。

如下代码:

const url = require('url');
const querystring = require('querystring'); // 如果是以井号隔开的话,那么使用后面的参数
const char = "with=query#param=that"; const str2 = querystring.parse(char, '#', null, {maxKeys: 2});
// 输出 { with: 'query', param: 'that' } const str3 = querystring.stringify(str2);
console.log(str3); // 输出 with=query&param=that // 如下使用 * 号分割,使用$符号链接
const str4 = querystring.stringify({name: 'kongzhi', sex: [ 'man', 'women' ] }, "*", "$");
console.log(str4); // name$kongzhi*sex$man*sex$women

2.3 querystring.escape(str);

escape该方法可使传入的字符串进行编码, 如下代码:

const url = require('url');
const querystring = require('querystring'); // 如果是以井号隔开的话,那么使用后面的参数
const char = "name=空智&sex=男"; const res = querystring.escape(char);
console.log(res); // 输出 name%3D%E7%A9%BA%E6%99%BA%26sex%3D%E7%94%B7

2.4 querystring.unescape(str);

该方法是对 使用了 escape编码的字符进行解码;如下代码:

const url = require('url');
const querystring = require('querystring'); // 如果是以井号隔开的话,那么使用后面的参数
const char = "name=空智&sex=男"; const res = querystring.escape(char);
console.log(res); // 输出 name%3D%E7%A9%BA%E6%99%BA%26sex%3D%E7%94%B7 const res2 = querystring.unescape(res);
console.log(res2); // name=空智&sex=男

nodeJS---URL相关模块用法(url和querystring)的更多相关文章

  1. nodejs学习笔记二(get请求、post请求、 querystring模块,url模块)

    请求数据 前台:form.ajax.jsonp 后台:接受请求并返回响应数据     前台<= http协议 =>后台   常用的请求的方式: 1.GET           数据在url ...

  2. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  3. 引用nodejs的url模块实现url路由功能

    我们在本地创建服务器之后需要写不同的后缀名来访问同一个站点的不同页面,如果不实现路由功能.则每次访问localhost:3000 不论后面写什么  比如localhost:3000/index.loc ...

  4. node.js 模块之url和querystring模块

    关系如下: url.parse(string).query | url.parse(string).pathname | | | | | ------ ------------------- http ...

  5. Django之URL(路由系统)用法

    路由系统 路由系统概念 简而言之,路由系统就是路径和视图函数的一个对应关系.django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里 ...

  6. JS - url相关

    今天在找获取当前网址除去参数的js方式,结果自己会的竟然只有window.location.href 查到的一篇博文: http://www.cnblogs.com/weiyuxinghuacun/a ...

  7. python URLObject url处理模块

    1.需求来源 给一个url串,例如https://github.com/zacharyvoase/urlobject?spam=eggs#foo,想要截取串中某个部分,比如传输协议(https).服务 ...

  8. Node.js学习笔记(一) --- HTTP 模块、URL 模块、supervisor 工具

    一.Node.js创建第一个应用 如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器, 来处理客户端的请求相应.不过对 Node.js 来说,概念完全 ...

  9. IIS 无法安装URL重写模块的解决办法 UrlReWrite (.NET`SQL技术交流 群号206656202)

    下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...

随机推荐

  1. Matlab Gauss quadrature

    % matlab script to demonstrate use of Gauss quadrature clear all close all % first derive the 2-poin ...

  2. 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系

    开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...

  3. 拜小白教你OpenCV3.2.0+VS2017开发环境配置

    第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: http://opencv.org/releases.html# 本人选择opencv3.2.0基于Windows平台.读者根据自己 ...

  4. asynchronous.js

    // 异步加载js (function(){ var _asyn_js_data = ['index.js','index1.js','index2.js','index3.js'] for(var ...

  5. Docker 搭建 ELK 收集并展示 tomcat 日志

    架构 前端展示 --> 索引搜索 <-- 日志提取及过滤 --> 日志缓存 <-- 日志收集 Kibana --> Elastash <-- Logstash -- ...

  6. Python 练习: 计算器

    import re def format_string(s): # 对表达式进行格式化 s = s.replace(' ', '') s = s.replace("--", &qu ...

  7. 纯小白入手 vue3.0 CLI - 3.3 - 路由的导航守卫

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...

  8. CSS expression属性

    expression属性是在IE5版本之后支持使用的,用来把CSS属性和JavaScript脚本关联起来.简单粗暴的说,该属性是用来调用JavaScript代码的. CSS属性后面是一段JavaScr ...

  9. WebLogic 8的安装与配置详谈

    本文主要是以windouw下32位的版本为例展开介绍,主要包括其安装与配置. 一.图形界面安装过程 1.双击安装程序server815_win32.exe,开始进行程序的安装. 2.点击Next按钮进 ...

  10. 四元数与欧拉角(RPY角)的相互转换

    RPY角与Z-Y-X欧拉角 描述坐标系{B}相对于参考坐标系{A}的姿态有两种方式.第一种是绕固定(参考)坐标轴旋转:假设开始两个坐标系重合,先将{B}绕{A}的X轴旋转$\gamma$,然后绕{A} ...