Node.js URL模块

什么是URL?

url全球统一资源定位符,对网站资源的一种简洁表达形式,也称为网址。

URL模块的使用

Node.js 里面有一个内置的 URL 模块,这个模块在代码中使用时需要通过 require() 方法进行引用。但是如果只是在命令行里比如 cmd 或 git bash 等使用此模块,则不需要引用。 引入格式:

var url = require("url");

URL一共提供了三个方法,分别是url.parse()url.format()url.resolve()

示例:

例如我们使用 url 模块中的 parse() 方法获取URL字符串,对其进行解析,然后返回 url 对象:

var url = require('url');
var adr = 'http://localhost:8888/index.html?year=2019&month=September';
var q = url.parse(adr, true);

console.log(q.host); 
console.log(q.pathname); 
console.log(q.search); 

var qdata = q.query; 
console.log(qdata.month); 

启动文件:

> node urlfile.js
localhost:8888
/index.html
?year=2019&month=September
September
Node.js文件服务器

我们来创建两个 html 文件,并将它们放到在与 Node.js 文件相同的文件夹中。 first.html文件的内容:

<!DOCTYPE html>
<html>
<body>
<h1>这是第一个文件</h1>
<p>欢迎来到侠课岛</p>
</body>
</html>

second.html文件的内容:

<!DOCTYPE html>
<html>
<body>
<h1>这是第二个文件</h1>
<p>侠课岛是优秀的互联网工作技能在线学习网站</p>
</body>
</html>

创建一个 Node.js 文件,该文件打开请求的文件并将内容返回给客户端。如果有任何问题,则抛出404错误。 fileserver.js文件内容:

var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    } 
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8888);

启动文件,分别访问不同页面:

> node fileserver.js

在浏览器中访问http://127.0.0.1:8888/,页面会显示:

404 Not Found

而访问http://127.0.0.1:8888/first.html,页面显示:

这是第一个文件
欢迎来到侠课岛

访问http://127.0.0.1:8888/second.html,页面显示:

这是第二个文件
侠课岛是优秀的互联网工作技能在线学习网站

URL 类的方法和属性

url.parse()方法

url.parse()方法用于获取URL字符串,并对其进行解析,然后返回URL对象。

语法如下:

url.parse(urlString [,parseQueryString [,slashesDenoteHost]])
  • urlString:要解析的URL字符串。

  • parseQueryString:默认为false,query返回的URL对象上的属性将是未解析,未解码的字符串。如果为true,则该query属性将始终设置为querystring模块parse() 方法返回的对象。

  • shashesDenoteHost:默认为false,是否以斜线解析主机名。

url.format()方法

url.format()方法将传入的url对象编程一个url字符串并返回。

语法如下:

url.format(urlObject)

参数 urlObject 是URL对象(由返回url.parse()或以其他方式构造),如果是字符串,则通过将其传递给来将其转换为对象url.parse()。

url.resolve()方法

url.resolve()方法以类似于解决锚标记HREF的Web浏览器的方式来解析相对于基础URL的目标URL,返回一个格式为"from/to"的字符串。

语法如下:

url.resolve(from,to)

from -- 要解析的基本URL
to -- 正在解析的HREF URL
url.hash属性

获取并设置URL的片段部分。分配给该hash属性的值中包含的无效URL字符已进行百分比编码。注意选择要百分比编码的字符可能会与url.parse()和 url.format()方法产生的字符有所不同。

url.host属性

获取并设置URL的主机部分。分配给该host属性的无效主机值将被忽略。

url.hostnam属性

获取并设置URL的主机名部分。url.hosturl.hostname 之间的区别是 url.hostname 不包含端口。为 hostname 属性设置无效的值则会被忽略。

url.href属性

获取及设置序列化的 URL。

获取 href 属性的值等同于调用url.toString()。将此属性的值设置为新值等同于使用 new URL(value) 创建新的URL对象。 URL 对象的每个属性都将被修改。如果给 href 属性设置的值是无效的 URL,则将会抛出 TypeError。

url.origin属性

获取只读的序列化的 URL 的 origin。

url.password属性

获取及设置 URL 的密码部分。分配给 password 属性的值中包含的无效 URL 字符是百分比编码的。 选择哪些字符进行百分比编码可能与url.parse() 和 url.format() 方法产生的内容有所不同。

url.pathname属性

获取及设置 URL 的路径部分。

url.port属性

获取及设置 URL 的端口部分。端口值可以是数字或包含 065535(含)范围内的数字字符串。 将值设置为给定 protocolURL 对象的默认端口将会导致 port 值变为空字符串('')。

端口值可以是空字符串,在这种情况下,端口取决于协议/规范:

  • ftp:21

  • gopher:70

  • http:80

  • https:443

  • ws:80

  • wss:443

在为端口分配值后,将首先使用 .toString() 将值转换为字符串。

url.protocol属性

获取及设置 URL 的协议部分。分配给 protocol 属性的无效协议值将会被忽略。

url.search属性

获取及设置 URL 的序列化查询部分。

url.username属性

获取及设置 URL 的用户名部分。

url.toString()方法

URL 对象上调用 toString() 方法将返回序列化的 URL。返回值与 url.href 和 url.toJSON() 的相同。

url.toJSON()方法

在 URL 对象上调用 toJSON() 方法将返回序列化的 URL。 返回值与 url.href 和 url.toString() 的相同。

更多可以查看:https://www.9xkd.com/3716132715.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值