nodejs urlモジュール詳細解

4864 ワード

nodejs urlモジュール
nodejsにおけるユーザurlフォーマットと反フォーマットモジュールのurl解析、処理などの操作に対するソリューション
1.url.parse(url String[、parseQueryString]]
  • urlStringが解析するURL文字列.
  • parseQueryStringtrueであれば、query属性は常にquerystringモジュールのparse()方法でオブジェクトを生成する.falseであれば、戻ってきたURLオブジェクトのquery属性は、未解析かつ復号化された文字列であることができる.デフォルトはfalseです.
  • slashesDenoteHosttrueであれば、//の後に次の/の前の文字列がhostとして解析される.例えば、//foo/bar{host: 'foo', pathname: '/bar'}ではなく{pathname: '//foo/bar'}に解析される.デフォルトはfalseです.url.parse()方法は、URL文字列を解析し、URLオブジェクトを返します.
  • url Stringが文字列でない場合はType Errを投げます.
    auth属性が存在しますが、エンコードできない場合はURIErrorをスローします.
    例1:
    var url = require("url")
    var myurl="http://www.nodejs.org/some/url/?with=query&param=that#about"
    parsedUrl=url.parse(myurl)
    
    結果
    { 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' 
    }
    
    parseメソッドの2番目のパラメータがtrueである場合、結果は以下の通りです.
    parsedUrl=url.parse(myurl,true)
    { 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' }
    
    2.url.format(urlObject)
  • urlObject〓URLオブジェクト(url.parse()が戻ってくるような).文字列である場合は、url.parse()を介してオブジェクトに変換される.
  • url.format()方法は、urlObjectからフォーマットされたURL文字列を返す.urlObjectがオブジェクトまたは文字列でない場合、url.format()TypeErrorをスローする.
    var url=require('url');  
    var obj1={ protocol: 'http:',      
      slashes: true,         
      auth: null,           
      host: 'calc.gongjuji.net',   
      port: null,                 
      hostname: 'calc.gongjuji.net',  
      hash: '#one#two',              
      search: '?name=zhangsan&age=18',  
      query: 'name=zhangsan&age=18',    
      pathname: '/byte/',              
      path: '/byte/?name=zhangsan&age=18',  
      href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'   
    };  
    var url1=url.format(obj1);  
    console.log(url1);//http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two  
    //      json    
    var obj2={ protocol: 'http:',  
    slashes: true,  
    auth: null,  
    host: 'calc.gongjuji.net',  
    port: null,  
    hostname: 'calc.gongjuji.net',  
    hash: '#one#two',  
    search: '?name=zhangsan&age=18',  
    query: { name: 'zhangsan', age: '18' }, //      ,          
    pathname: '/byte/',  
    path: '/byte/?name=zhangsan&age=18',  
    href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' };  
    var url2=url.format(obj2);  
    console.log(url2); //http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two  
    //         
    var obj3={ protocol: null,  
    slashes: true,  
    auth: null,  
    host: 'www.gongjuji.net',  
    port: null,  
    hostname: 'www.gongjuji.net',  
    hash: '#one',  
    search: '?name=zhangsan',  
    query: { name: 'zhangsan' },  
    pathname: '/byte/',  
    path: '/byte/?name=zhangsan',  
    href: '//www.gongjuji.net/byte/?name=zhangsan#one' };  
    var url3=url.format(obj3);  
    console.log(url3);//www.gongjuji.net/byte/?name=zhangsan#one  
    
    3.url.resolive(from、to)
  • from解析時に対応する基本URL.
  • toが解析するハイパーリンクURL.
  • url.resolve()方法は、一つの目標URLを一つの基礎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'
    
    参考:https://www.jianshu.com/p/fb5278d02cc4 http://nodejs.cn/api/url.html#url_クルクルパーシ_urlstring_parsequerystring_slashesdenotehosthttps://blog.csdn.net/u011127019/article/details/52350172