美文网首页NodeJS开发教程
《NodeJS开发教程10-URL使用》

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

作者: Codingyu | 来源:发表于2018-05-06 22:24 被阅读5次

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

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

    1.URL路径构成规则解析

    我们来看如下路径

    https://user:pass@sub.host.com: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:pass@sub.host.com:8080/p/a/t/h?query=string#hash");//解析不出来用户名和密码
    
    const {URL}=require("url");//导入url.URL
    const myurl=new URL("https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash");//可以解析出来用户名和密码
    //基础属性
    console.log(`href:${myurl.href}`);//完整路径 https://user:pass@sub.host.com: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:pass@sub.host.com: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:pass@sub.host.com: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:pass@sub.host.com: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使用》

        本文链接:https://www.haomeiwen.com/subject/likprftx.html