NodeJs -- URL 模块.

Posted cb_za

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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地址产生影响.

 

 运行:

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

 

 

 

以上是关于NodeJs -- URL 模块.的主要内容,如果未能解决你的问题,请参考以下文章

nodejs之url模块

nodejs之url模块

Nodejs模块之URL模块

nodeJs-url 模块

nodejs之url模块

nodejs入门API之url模块+querystring模块