Node.js的url模块的学习

url核心模块

URL 字符串是结构化的字符串,包含多个含义不同的组成部分。 解析字符串后返回的 URL 对象,每个属性对应字符串的各个组成部分。

API

  1. url 模块提供了两套 API 来处理 URL
  2. 一个是旧版本遗留的 API,保留是为了兼容已存在的应用程序
  3. 一个是实现了 WHATWG标准的新 API, 新的应用程序应使用 WHATWG 的 API。
  4. WHATWG标准?简单来讲,URL标准规定了URLs,域名,IP地址,编码application/x-www-form-urlencoded的格式和他们的API

新旧API入门

  1. 使用遗留的 API 解析 URL 字符串
const url = require('url');
let myURL = url.parse('https://user:[email protected]:8080/p/a/t/h?query=string#hash');
console.log(myURL)

打印结果如图所示:
url

  • 对象转化为标准的URL字符串,不是使用stringify(可能看到parse就联想到stringify),是使用format()
console.log(url.format(myURL))

结果:https://user:[email protected]:8080/p/a/t/h?query=string#hash

  1. 使用 WHATWG 的 API 解析 URL 字符串:
const {URL} = require('url')
const myURL = new URL('https://user:[email protected]:8080/p/a/t/h?query=string#hash')
console.log(myURL)

新API
这里使用的不是真实的href,可以自己随便复制网络上一个地址进行使用

get参数解析

需求:抓取url地址的用户名和密码
const http = require('http')
const path = require('path')
const {URL} = require('url')
http.createServer((req,res)=>{
	let obj = new URL(path.join(__dirname,req.url))
	let user = obj.searchParams.get('username')
	let pwd = obj.searchParams.get('password')
	res.writeHead(200,{'Content-Type':'text/plain;charset=utf8'})
	res.end('用户名:'+ user + '密码' + pwd)
}).listen(3000,()=>{
	console.log('running')
})

运行代码,打开浏览器输入地址,结果返回给客户端数据如下:
结果
解析

  1. 导入http核心模块,我们需要构建一个web服务器
  2. 导入url模块,通过url模块的新API来实现,
  3. 我们从之前打印的URL对象可知,可以通过search来获取,但是涉及字符串的操作,比较繁琐,也可以通过searchParams,使用get来直接获取。(旧API可以使用query来获取)
  4. res.writeHead设置格式和编码
  5. res.end返回客户端

猜你喜欢

转载自blog.csdn.net/weixin_41105030/article/details/86661093