《NodeJS开发教程10-URL使用》

NodeJS提供了 对URL的封装,使用起来很方便。URL正式点的名称叫做:“统一资源定位符”。听着很拗口很高深,其实它的概念很简单,无外乎就是一些规则,标识唯一资源的路径。好了废话不多说了,这节我会讲到如下三个功能点:

  • 1.URL路径构成规则解析
  • 2.URL属性searchParams使用
  • 3.URL方法resolve使用

1.URL路径构成规则解析

我们来看如下路径

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

这个路径是完整的、带有授权部分的普通统一资源标志符,语法看上去如下:

协议://用户名:密码@子域名.域名.顶级域名:[端口号]/目录/文件名.文件后缀?参数=值#标志

下面我们看下NodeJS中URL的使用:
首先还是需要导入模块

const url=require("url");
const {URL}=require("url");//这里我们也可以这样导入 url.URL

来看完整代码

/*URL*/
const url=require("url");
// const myurl=url.parse("https://user:[email protected]:8080/p/a/t/h?query=string#hash");//解析不出来用户名和密码

const {URL}=require("url");//导入url.URL
const myurl=new URL("https://user:[email protected]:8080/p/a/t/h?query=string#hash");//可以解析出来用户名和密码
//基础属性
console.log(`href:${myurl.href}`);//完整路径 https://user:[email protected]:8080/p/a/t/h?query=string#hash
console.log(`host:${myurl.host}`);//域名 sub.host.com:8080
console.log(`protocol:${myurl.protocol}`);//协议 https:
console.log(`port:${myurl.port}`);//端口 8080
console.log(`username:${myurl.username}`);//用户名 user
console.log(`password:${myurl.password}`);//密码 pass
console.log(`pathname:${myurl.pathname}`);//路径名称 /p/a/t/h
console.log(`search:${myurl.search}`);//查询参数 query=string
console.log(`hash:${myurl.hash}`);//页面的标签值(锚点) #hash

以上API使用,可以根据每个注释说明对号入座即可。快速搞清楚URL的语法规则,以便在日后的使用中能灵活运用,因为后面我们会经常去使用它,尤其是使用了RestFul的项目。

2.URL属性searchParams使用

const {URL}=require("url");//导入url.URL
const myurl=new URL("https://user:[email protected]:8080/p/a/t/h?query=string#hash");//可以解析出来用户名和密码

//SearchParams查询参数
myurl.searchParams.append("name","July");//向查询参数组中追加 name=July
myurl.searchParams.append("age",18);////向查询参数组中追加 age=18
console.log(`searchParams_append:${myurl.toString()}`);//观察打印的查询参数发生了变化
//log输出:searchParams_append:https://user:[email protected]:8080/p/a/t/h?query=string&name=July&age=18#hash
myurl.searchParams.delete("age");
console.log(`searchParams_delete:${myurl.toString()}`);
//log输出:searchParams_delete:https://user:[email protected]:8080/p/a/t/h?query=string&name=July#hash

myurl.searchParams 指: myurl的查询参数 ?query=string&name=July&age=18
它是一个js对象实例,我们可以通过它对当前url进行增删改查操作。

当然你也可以像下面这样去操作url的查询参数项:

const {URLSearchParams}=require("url");//相当于 url.URLSearchParams

var params=new URLSearchParams("goodsId=a123456789&price=0.85");//构造一个查询参数对象
console.log(`new URLSearchParams-price:${params.get("price")}`);
params.append("goodsName","《NodeJS教程》");//追加查询参数
params.set("price",1.9);//设置更新查询参数
console.log(`URLSearchParams-has:${params.has("size")}`);//查询是否有某个键
console.log(`URLSearchParams:${params.toString()}`);//字符串表示
//遍历
params.forEach((value,key,urlSearchParams)=>{
    console.log(`foreach-URLSearchParams-key:${key},value:${value}`);
});

3.URL方法resolve使用

url.resolve(from,to) :解构url(通过resolve方法我们可以添加或替换url)

from 源地址
to 需要添加或替换的标签

//url.resolve
url.resolve('/one/two/three', 'four');         // '/one/two/four'
url.resolve('http://example.com/', '/one');    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'

OK!对于URL的使用就分享到这里,其实URL还有很多其它用法,我就不一一列出了,感兴趣的朋友可以到 NodeJS官方API查阅。
谢谢大家!

你可能感兴趣的:(《NodeJS开发教程10-URL使用》)