url核心模块
URL 字符串是结构化的字符串,包含多个含义不同的组成部分。 解析字符串后返回的 URL 对象,每个属性对应字符串的各个组成部分。
API
- url 模块提供了两套 API 来处理 URL
- 一个是旧版本遗留的 API,保留是为了兼容已存在的应用程序
- 一个是实现了 WHATWG标准的新 API, 新的应用程序应使用 WHATWG 的 API。
- WHATWG标准?简单来讲,URL标准规定了URLs,域名,IP地址,编码application/x-www-form-urlencoded的格式和他们的API
新旧API入门
- 使用遗留的 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字符串,不是使用stringify(可能看到parse就联想到stringify),是使用format()
console.log(url.format(myURL))
结果:https://user:[email protected]:8080/p/a/t/h?query=string#hash
- 使用 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)
这里使用的不是真实的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')
})
运行代码,打开浏览器输入地址,结果返回给客户端数据如下:
解析
- 导入http核心模块,我们需要构建一个web服务器
- 导入url模块,通过url模块的新API来实现,
- 我们从之前打印的URL对象可知,可以通过search来获取,但是涉及字符串的操作,比较繁琐,也可以通过searchParams,使用get来直接获取。(旧API可以使用query来获取)
- res.writeHead设置格式和编码
- res.end返回客户端