美文网首页
NodeJs -- 3 (url和querystring 模块)

NodeJs -- 3 (url和querystring 模块)

作者: Coldhands | 来源:发表于2019-06-28 15:59 被阅读0次

    url模块

    1. url.parse(urlString[,parseQueryString[,slashesDenoteHost]])

    url.parse(urlString[,parseQueryString[,slashesDenoteHost]]) 解析一个 URL 字符串并返回一个 URL 对象。

    • urlString 字符串 -- 要解析的URL字符串
    • parseQueryString 布尔值 -- 默认为false,为true时,返回的对象中,query的属性为一个对象,可省略
    • slashesDenoteHost 布尔值 -- 解析主机处理,一般情况下使用不到
    var url = require("url");
    var myurl = "http://www.nodejs.org/some/url/?with=query&param=that#about";
    parsedUrl=url.parse(myurl);
    
    // 结果
    Url {
      protocol: 'http:',
      slashes: true,
      auth: null,
      host: 'www.nodejs.org',
      port: null,
      hostname: 'www.nodejs.org',
      hash: '#about',
      search: '?with=query&param=that',
      query: 'with=query&param=that',
      pathname: '/some/url/',
      path: '/some/url/?with=query&param=that',
      href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
    }
    
    var url = require("url");
    var myurl = "http://www.nodejs.org/some/url/?with=query&param=that#about";
    parsedUrl=url.parse(myurl, true); // 第二个参数为true
    
    // 结果
    Url {
      protocol: 'http:',
      slashes: true,
      auth: null,
      host: 'www.nodejs.org',
      port: null,
      hostname: 'www.nodejs.org',
      hash: '#about',
      search: '?with=query&param=that',
      query: { with: 'query', param: 'that' },  // 第二个参数为true
      pathname: '/some/url/',
      path: '/some/url/?with=query&param=that',
      href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
    }
    

    返回的对象说明:
      protocol :请求协议
      host :URL主机名已全部转换成小写,包括端口信息
      auth :URL中身份验证信息部分
      hostname :主机的主机名部分,已转换成小写
      port :主机的端口号部分
      pathname :URL的路径部分,位于主机名之后请求查询之前
      search :URL的 “查询字符串” 部分,包括开头的问号
      path :pathname和search连在一起
      query :查询字符串中的参数部分(问号后面部分字符串),或者使用querystring.parse()解析后返回的对象
      hash :URL的 “#” 后面部分(包括 # 符号)

    2. url.format(urlObject)
    • urlObject 对象|字符串 -- 一个URL对象(就像url.parse()返回的)。如果是一个字符串,则通过url.parse()转换为一个对象。
      url.format(urlObject)的作用和url.parse(urlString[,parseQueryString[,slashesDenoteHost]]) 相反
    3. url.resolve(from, to)
    • from 字符串 -- 解析时相对的基本URL或者说当前路径
    • to 字符串 -- 要解析的 URL或者说想要去的往的路径
    const url = require('url');
    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'
    

    注意:只能重定向路径名,不能重定向域名


    querystring模块

    querystring 模块提供序列化与反序列化,转义与反转义两组功能

    1. querystring.stringify(obj, [step], [eq])
      将一个对象序列化为一个查询的字符串,使用&和=分别为字符串中的分隔符和赋值符。
        # 如果转换的对象中存在中文,会对中文进行unicode编码
        # step 修改分隔符
        # eq 修改赋值符

    2.querystring.parse(str, [sep], [eq], [options])
    根据“&”和“=”将字符串进行分割,反序列化为JSON对象,而options包含的maxKeys默认设置为1000,如果将其设置为0则表示没这个限制。
      # step 用来指明分隔符是用了哪个字符,根据分隔符来进行反序列化
      # eq 用来指明赋值符是哪个字符

    3.querystring.escape,querystring.unescape
    编码和解码


    QueryString模块和Url模块之间的关系

                            url.parse(string).query
                                               |
               url.parse(string).pathname      |
                           |                   |
                           |                   |
                         ------ -------------------
    http://localhost:8888/start?foo=bar&hello=world
                                    ---       -----
                                     |          |
                                     |          |
                  querystring(string)["foo"]    |
                                                |
                             querystring(string)["hello"]
    

    相关文章

      网友评论

          本文标题:NodeJs -- 3 (url和querystring 模块)

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