当前位置 主页 > 网站技术 > 代码类 >

    使用node.JS中的url模块解析URL信息(3)

    栏目:代码类 时间:2020-02-06 15:06

    url.format(urlObject)

    url.parse(str)的反向操作,输入一个解析过的 URL 对象,返回格式化过的字符串

    urlObject包含了很多字段,比如protocol、slashes、protocol等,且不一定需要全部传,所以有一套解析逻辑

    格式化的工作流程如下

    href 会被忽略

    protocol 无论是否有末尾的 : (冒号),会同样的处理

    http, https, ftp, gopher, file 协议会被添加后缀://

    mailto, xmpp, aim, sftp, foo, 等协议添加后缀:

    slashes 如果协议需要 ://,设置为 true

    仅需对之前列出的没有斜杠的协议,比如议 mongodb://localhost:8000/

    auth 如果出现将会使用.

    hostname 仅在缺少 host 时使用

    port 仅在缺少 host 时使用

    host 用来替换 hostname 和 port

    pathname 无论结尾是否有 / 将会同样处理

    search 将会替代 query属性

    无论前面是否有 / 将会同样处理

    query (对象; 参见 querystring) 如果没有 search,将会使用

    hash 无论前面是否有#,都会同样处理

    var url = require('url');
    var obj = {
     protocol: 'http:',
     auth: 'user:pass',
     host: 'host.com:8080',
     hash: '#hash',
     query: { author: '小火柴' }
    }
    //http://user:pass@host.com:8080?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash
    console.log(url.format(obj));

    url.resolve(from, to)

    url.resolve()方法以一种浏览器解析超链接的方式把一个目标URL解析成相对于一个基础URL,参数如下

    from <String> 解析时相对的基本 URL。

    to <String> 要解析的超链接 URL。

    var url = require('url');
    console.log(url.resolve('/one/two/three', 'four'));     // '/one/two/four'
    console.log(url.resolve('http://example.com/', '/one'));  // 'http://example.com/one'
    console.log(url.resolve('http://example.com/one', '/two')); // 'http://example.com/two'

    更多关于node.JS中url模块的使用方法大家可参考下面的相关链接