Node学习(二)03-node核心模块——querystring模块-处理查询字符串模块 & url模块-两套处理url的API之querystring.parse、searchParams.get

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运行效果如下:

效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值