zoukankan      html  css  js  c++  java
  • NodeJs -- URL 模块.

    1. url.parse(网址): 将字符串 解析成对象.

     

     1-1) 一个参数 : 或者  参数1, false(默认), false(默认)

    var url = require('url');
    
    console.log(url.parse("http://www.baidu.com:8080/list?c=Cate&a=index#main"));
    console.log(url.parse("https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash"));
    console.log(url.parse("http://127.0.0.1/culture/action.php?c=HCourseProxy&a=displaySuccess&courseId=4"));

    运行:

    --------------------------------------------------

     1-2) 两个参数  或者  是  参数1,  true, false(默认)

    如果第二个参数设置为 true. 那么 query属性  就会调用 querystring模块的 方法 ,生成一个对象.

    1 var url = require('url');
    2 
    3 console.log(url.parse("http://www.baidu.com:8080/list?c=Cate&a=index#main", true));
    4 console.log(url.parse("https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash", true));
    5 console.log(url.parse("http://127.0.0.1/culture/action.php?c=HCourseProxy&a=displaySuccess&courseId=4", true));

    运行:

    1-3) 三个参数:  参数1 , 参数2(布尔值), true

    对于 不知道是什么协议的时候, 如果想解析//www.baidu.com:8080/list?c=Cate&a=index#main 这种 , 就可以将第 三个参数设置为 true.

    1 var url = require('url');
    2 
    3 console.log(url.parse("//www.baidu.com:8080/list?c=Cate&a=index#main"));
    4 console.log(url.parse("//www.baidu.com:8080/list?c=Cate&a=index#main", false, true));
    5 
    6 console.log(url.parse("//baidu.com:8080/list?c=Cate&a=index#main"));
    7 console.log(url.parse("//baidu.com:8080/list?c=Cate&a=index#main", false, true));

    1-4) 实例:

    第一: 入口文件:  index.js

    1 var server = require('./server');
    2 
    3 server.start();
    require('./server'); 引入的是 自己定义的本地模块 . 这里 是   ./server

    第二: 服务器文件: server.js

     1 var http = require("http");
     2 var url = require("url");
     3 
     4 
     5 function start(){
     6     http.createServer(function(request, response) {
     7 
     8         console.log(url.parse(request.url));
     9         console.log(url.parse(request.url).query);
    10         var pathname = url.parse(request.url).pathname;
    11         console.log('request for [' +pathname+ "] received.");
    12         response.writeHead(200, {"Content-Type": "text/plain"});
    13         response.write("Hello World");
    14           response.end();
    15     }).listen(8888);
    16 
    17     console.log("server has started.");
    18 }
    19 
    20 exports.start = start;

     访问:

     浏览器访问:

    结果控制台输出:

     不同的网址的输出: pathname, pathname.query .   pathname.pathname

    -------

     -------

     ----

     2. url.format(对象)  将对象 转成 字符串

    var url = require('url');
    
    console.log(url.format({
      protocol: 'https:',
      slashes: true,
      auth: 'user:pass',
      host: 'sub.host.com:8080',
      port: '8080',
      hostname: 'sub.host.com',
      hash: '#hash',
      search: '?query=string',
      query: 'query=string',
      pathname: '/p/a/t/h',
      path: '/p/a/t/h?query=string',
      href: 'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash' }));

     运行:

     3.  url.resolve()

     

     1 var url = require('url');
     2 
     3 console.log(url.resolve("http://www.runoob.com/", "nodejs/nodejs-path-module.html"));
     4 console.log(url.resolve("http://www.runoob.com/", "/nodejs/nodejs-path-module.html"));
     5 
     6 console.log(url.resolve("http://www.runoob.com/list/", "nodejs/nodejs-path-module.html"));
     7 console.log(url.resolve("http://www.runoob.com/list/", "/nodejs/nodejs-path-module.html"));
     8 console.log(url.resolve("http://www.runoob.com/list", "/nodejs/nodejs-path-module.html"));
     9 
    10 console.log(url.resolve("http://www.runoob.com/list/cate/", "../nodejs-path-module.html"));
    11 console.log(url.resolve("http://www.runoob.com/list/cate", "../nodejs-path-module.html"));

    运行:

     可见:

    1)当 第一个参数只是 域名的时候, 第二个参数总是追加在 第一个参数的后面 , 参见 代码 3 ,代码 4

    2)当第一个参数 不只是域名,还有path 的时候, 第一个参数末尾是否带有 / , 以及 第二个参数开始是否有/ .都 会对生成的 url地址产生影响.

     运行:

    --------------

     

  • 相关阅读:
    老婆和老媽同時掉在了水裡终于有答案了
    js对象序列化为json字符串
    基于jQuery的单据输入
    重发我的 HTML单据输入控件
    Spring MVC 实现REST风格API版本控制
    匿名方法和Lambda 表达式
    委托的定义和委托的实例化和使用
    LINQ进阶
    C#3.0的新特性
    使用 var 和 object 声明变量有什么区别?
  • 原文地址:https://www.cnblogs.com/cbza/p/7275287.html
Copyright © 2011-2022 走看看