Node学习(二)03-node核心模块——querystring模块-处理查询字符串模块 & url模块-两套处理url的API之querystring.parse、searchParams.get
2.3.3 querystring模块
查询字符串(id=1&name=zs&age=20)处理模块
- 处理查询字符串(请求参数)的模块
-
使用方法
-
加载模块
const querystring = require('querystring');
-
调用querystring模块中的方法
相互转化
// parse -- 将查询字符串解析成JS对象 console.log(querystring.parse('id=1&name=zs&age=20')); // { id: '1', name: 'zs', age: '20' } // stringify -- 将JS对象转成查询字符串 console.log(querystring.stringify({ id: '1', name: 'zs', age: '20' })); // id=1&name=zs&age=20
-
注意
// var str = '{"name":"May"}'; //必须是单引号包含双引号
var str = '["apple", "banana"]';
console.log(typeof str);
console.log(JSON.parse(str));
console.log(typeof JSON.parse(str));
2.3.4 url模块
url模块
一个完整的url 协议://主机地址:[端口]/文件地址?参数
- 提供两套处理url的API
- 遗留的API,提供url.parse();方法解析url
- 新的API,通过实例化URL,来解析url
-
使用方法
-
加载模块
const url = require('url');
-
遗留API使用方法
let myURL = url.parse('/test.html?id=11&age=22'); // 返回一个包含url各个部分的对象
-
新的API使用方法,实例化的时候,必须传递一个完整的url
1
// 直接提供一个完整的url let myURL = new URL('http://www.xxx.com/test.html?id=11&age=22'); // 或 // 提供两个参数,一是文件路径及参数部分,二是域名,总之,二者组合必须是完整的url let myURL = new URL('/test.html?id=11&age=22', 'http://www.xxx.com'); // 得到的myURL是一个对象,包含url中的各个部分 // 如果需要解析参数部分,则使用querystring模块,或使用URL的一个子对象searchParams中的get方法 let age = myURL.searchParams.get('age'); // 22
2
// 使用URL对象来解析url // let url = new URL(一个完整的url); // let url = new URL('http://www.xxx.com/aa/bb.html?id=111&age=222'); // let url = new URL(一部分url, url前面的部分); let url = new URL('aa/bb.html?id=111&age=222', 'http://www.aaxx.com'); // console.log(url); // 获取参数id的值 console.log(url.searchParams.get('id')); // 111
-
实例
浏览器的location信息,以百度为例
node的url信息-有query版本
06-url模块.js
/// 老版本的url模块
const url = require('url');
// url.parse(); -- 处理url为js对象,得到的结果类似于浏览器中的location
let obj = url.parse('http://www.xxx.com/aa/bb.html?id=111&age=222');
console.log(obj);
// console.log(obj.query); // id=111&age=222
const querystring = require('querystring');
let result = querystring.parse(obj.query);
console.log(result); // { id: '111', age: '222' }
console.log(result.id); // 111
node ./06-url模块.js
运行效果如下:
效果
node的new URL信息-无query版本
06-url模块.js
// 使用URL对象来解析url
// let url = new URL(一个完整的url); // 写法一
// let url = new URL('http://www.xxx.com/aa/bb.html?id=111&age=222'); // 写法二
// let url = new URL(一部分url, url前面的部分);
let url = new URL('aa/bb.html?id=111&age=222', 'http://www.aaxx.com');
// console.log(url);
// 获取参数id的值
console.log(url.searchParams.get('id')); // 111
node ./06-url模块.js
运行效果如下:
效果