zoukankan      html  css  js  c++  java
  • Node 之URL模块

    首先在控制台(终端)开启Node模式,并打印出url来看一下:

     

    从图中可以看出,它有 UrlparseresolveresolveObjectformatURLURLSearchParamsdomainToASCIIdomainToUnicode 这么多模块。

    那么这些模块有什么用呢?

    我们来看看最终的效果:

    首先输入http://localhost:3000之后的效果

    之后是输入http://localhost:3000/?userName=perfect*&userAge=21的效果:

     从图中可以看出

    访问地址是:http://localhost:3000/?userName=perfect*&userAge=21   如果 执行 console.log(req.url),它将执行两次,分别返回下面的信息:

    代码:

    var url=require("url");//引入url模块
    
    var http=require("http");//引入HTTP模块
    //创建HTTP模块,因为URL的监听,需要HTTP模块的开启
    
    //用HTTP模块创建服务
    /*
     
     * req获取url信息(request)
     * res浏览器返回响应信息(response)
     * */
    
    
    http.createServer(function(req,res){
        
        
           var result=url.parse(req.url,true);
            
            console.log(result);
            
            
            
            /*Url{
                
                protocol:null,
                slashes:null,
                auth:null,
                host:null,
                port:null,
                hostname:null,
                hash:null,
                search:'?userName=perfect*&userAge=21',
                query:{userName:'perfect*',userAge:'21'},
                pathname:'/',
                path:'/?userName=perfect*&userAge=21',
                href:'/?userName=perfect*&userAge=21'
            }
            
            */
            console.log(result.query.userName);
            console.log(result.query.userAge);
    
        
        
        // 设置 HTTP 头部,状态码是 200,文件类型是 html,字符集是 utf8
        res.writeHead(200,{
            "Content-Type":"text/html;charset=UTF-8"
            
            
            
            
        });
        // 往页面打印值
        res.write('<h1 style="text-align:center">欢迎来到perfect*博客园</h1>');
        
        // 结束响应
        res.end();
        
    }).listen(3000);

    使用 url 的 parse 方法parse 方法需要两个参数: 第一个参数是地址     第二个参数是 true 的话表示把 get 传值转换成对象 

     var result=url.parse(req.url,true);
    

    可以通过 query,获取到我们想要的路径字段。

    比如说上面的代码中:

      query:{userName:'perfect*',userAge:'21'},

     var result=url.parse(req.url,true);
            
            console.log(result);
            

    该段代码改为

    console.log(url);

    url模块所有内容显示:

    Url: [Function: Url],
      parse: [Function: urlParse],//获取地址信息
      resolve: [Function: urlResolve],//追加或者替换地址
      resolveObject: [Function: urlResolveObject],
      format: [Function: urlFormat],//逆向parse,根据地址获取url信息
      URL: [Function: URL],
      URLSearchParams: [Function: URLSearchParams],
      domainToASCII: [Function: domainToASCII],
      domainToUnicode: [Function: domainToUnicode],
      pathToFileURL: [Function: pathToFileURL],
      fileURLToPath: [Function: fileURLToPath] }

    parse模块的使用;

    代码:

    console.log(url.parse("https://jiguiyan.cnblogs.com"))
            
            
            
            /*Url{
                
                protocol:'https:',
                slashes:true,
                auth:null,
                host:'jiguiyan.cnblogs.com',
                port:null,
                hostname:'jiguiyan.cnblogs.com',
                hash:null,
                search:null,
                query:null,
                pathname:'/',
                path:'/',
                href:'https://jiguiyan.cnblogs.com'
            }
            

    parse 带参数:

    console.log(url.parse("http://www.baidu.com/new?name=zhangsan"));
    
    /**
     * Console:
      Url {
        protocol: 'http:',
        slashes: true,
        auth: null,
        host: 'www.baidu.com',
        port: null,
        hostname: 'www.baidu.com',
        hash: null,
        search: '?name=zhangsan',
        query: 'name=zhangsan',
        pathname: '/new',
        path: '/new?name=zhangsan',
        href: 'http://www.baidu.com/new?name=zhangsan' 
      }
     */

    format的使用:

    效果图:

    console.log(url.format({
      protocol: 'http:',
      slashes: true,
      auth: null,
      host: 'www.baidu.com',
      port: null,
      hostname: 'www.baidu.com',
      hash: null,
      search: '?name=zhangsan',
      query: 'name=zhangsan',
      pathname: '/new',
      path: '/new?name=zhangsan',
      href: 'http://www.baidu.com/new?name=zhangsan' 
    }))

    resolve 的使用:

    console.log(url.resolve("https://jiguiyan.cnblogs.com", "jiguiyan"));

     更多关于url的学习可参考官网:http://nodejs.cn/api/url.html#url_class_url

    博文学习来源:https://juejin.im/post/5c1f8e52f265da6170071e43
  • 相关阅读:
    Application和Page详解
    Session解析
    CSS设置技巧
    CSS布局模型
    CSS盒模型
    JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
    设计模式——单例模式
    设计模式——工厂模式
    Go语言学习
    每周一个设计模式
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/11154263.html
Copyright © 2011-2022 走看看