c语言编程笔录

首页 >   > 笔记大全

笔记大全

Node中的url模块和querystring模块怎么使用

更新时间:2023-12-07

1. url模块的使用

url模块是Node内置的模块,用于解析、格式化URL,它提供了以下的一些方法:

  • url.parse(urlString[, parseQueryString[, slashesDenoteHost]]): 将一个 URL 字符串转换成一个 URL 对象。
  • url.format(urlObject): 将 URL 对象格式化成一个 URL 字符串
  • url.resolve(from, to): 解析一个相对URL,返回完整的URL

下面是一个例子:


const url = require('url');

// 解析 URL 字符串
const urlString = 'https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2';
const urlObj = url.parse(urlString, true);

console.log(urlObj);
/* 返回结果:
Url {
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com',
  port: null,
  ...

*/

// 格式化 URL 对象
const newUrlObj = {
  protocol: 'https:',
  slashes: true,
  host: 'www.baidu.com',
  pathname: '/s',
  query: {
    wd: 'node.js',
    rsv_spt: '1',
    rsv_iqid: '0xef2e3dad000f57b2',
    issp: '1',
    f: '8',
    rsv_bp: '1',
    rsv_idx: '2'
  }
};

const newUrlString = url.format(newUrlObj);
console.log(newUrlString); // https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2

// 解析相对 URL
const from = 'https://www.baidu.com/';
const to = 's?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2'; 

const resolvedUrl = url.resolve(from, to);
console.log(resolvedUrl); // https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2

2. querystring模块的使用

querystring模块是Node内置的模块,用于解析和格式化 URL 查询字符串(query string)。

  • querystring.parse(str[, sep[, eq[, options]]]): 将一个查询字符串解析成一个对象
  • querystring.stringify(obj[, sep[, eq[, options]]]): 将一个对象序列化成一个查询字符串

下面是一个例子:


const querystring = require('querystring');

// 解析查询字符串
const query = 'name=Kobe&age=42&occupation=basketball%20player';
const obj = querystring.parse(query);

console.log(obj);
/* 返回结果:
{
  name: 'Kobe',
  age: '42',
  occupation: 'basketball player'
}
*/

// 格式化查询字符串
const newQuery = {
  name: 'Lebron',
  age: '36',
  occupation: 'basketball player'
};

const queryString = querystring.stringify(newQuery);
console.log(queryString); // name=Lebron&age=36&occupation=basketball%20player

3. URL和query string的结合使用

在实际开发中,我们经常需要将URL和query string结合起来使用,下面是一个例子:


const url = require('url');
const querystring = require('querystring');

const urlString = 'https://www.baidu.com/search?q=node.js';
const urlObj = url.parse(urlString);
const { query } = urlObj;
const queryObj = querystring.parse(query);

console.log(queryObj); // { q: 'node.js' }

4. 总结

url模块和querystring模块是Node内置的两个模块,用于解析和格式化URL和URL查询字符串。url模块提供了url.parse、url.format、url.resolve三个方法,用于解析一个URL字符串、格式化URL对象和解析相对URL字符串等。querystring模块提供了querystring.parse、querystring.stringify两个方法,用于解析和格式化查询字符串。在实际开发中,我们需要结合使用URL和query string模块来实现一些功能。以上提供的方法只是常用的几种,更多的方法可以查阅官方文档。