Node.js 初识 URL 模块

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

URL 模块提供了一些解析 URL 的工具

1
var  url = require( 'url' );


URL 是一段 结构化的字符串,包含了多个有意义的部分。解析完成以后,会返回一个 URL对象(包含每个部分的属性)。


wKioL1hstFLyfdG-AABGNZGvyz4802.png


urlObject.href

href 属性指的是 被解析后完整的 URL 字符串,包括 协议名、主机名等部分,并且被转换成小写字母

例如:'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'



urlObject.protocol

protocol 属性指的是 小写格式 URL 的协议名

例如:'http:'



urlObject.slashes

slashes 属性是一个布尔值,如果协议名后紧跟着两个 //,则为true



urlObject.host

host 属性是整个小写 URL 的主机名,也包括端口号

例如:'host.com:8080'



urlObject.auth

auth 属性是 URL 的用户名和密码部分

例如:'user:pass'



urlObject.hostname

hostname 属性是小写 URL 的主机名,不包括端口号

例如:'host.com'



urlObject.port

port 属性是端口号, host 属性中的数字部分

例如:'8080'



urlObject.pathname

pathname 属性由 URL 完整的路径部分组成,位于在host属性(包括端口号)之后和 query或hash 属性之前的部分,由?或 # 来界定

例如:'host.com'




urlObject.search

search 属性由 URL 中的整个 query string 部分组成,包含 “?”符号

例如:'?query=string'




urlObject.path

path 属性是 pathname 部分和 search 部分的串联

例如:'/p/a/t/h?query=string'




urlObject.query

query 属性是不包含 “?”符号的 query string 或者是通过 querystring 模块的 parse() 方法返回的一个对象。

例如:'query=string' or {'query': 'string'}




urlObject.hash

hash 属性指的是锚点,URL中包含“#”符号的部分

例如:'#hash'


现在可以通过一段 JS 代码来查看下 URL 被解析后的各个部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var  http = require( 'http' );
 
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
 
     //url.parse()  接收一个URL字符串,解析并返回一个URL对象
     
     var  result = url.parse( 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' );
 
     console.log(result);
     res.end();
});
 
server.listen(4000,  '127.0.0.1' );


打开浏览器,在地址栏输入“127.0.0.1:4000”,可以查看到控制台打印出: (此处用的是Webstorm,如果不是的话,还需要用命令行工具先挂起服务器)

wKiom1hsu96z32qGAABZ_3pGPAM362.png


url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var  http = require( 'http' );
 
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
 
     //url.parse()  接收一个URL字符串,解析并返回一个URL对象
 
     var  result = url.parse( 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' , true );
 
     console.log(result);
     res.end();
});
 
server.listen(4000,  '127.0.0.1' );


查看打印结果中 query 部分

wKioL1hsu9Dxg4QDAABjMmlhicE268.png



根据前面的概念,我们尝试做一个小例子。新建一个表单页面,输入用户名、年龄、性别,提交到 127.0.0.1:5000,在页面中输出 提交的信息


HTML代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
< html >
< head  lang = "en" >
     < meta  charset = "UTF-8" >
     < meta  http-equiv = "X-UA-Compatible"  content = "IE=edge" >
     < meta  name = "format-detection"  content = "telephone=no" />
     < meta  name = "format-detection"  content = "email=no" />
     < meta  name = "viewport"  content = "width=device-width, initial-scale=1" >
     < title ></ title >
     <!--[if lt IE 9]>
       <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
       <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
     <![endif]-->
 
</ head >
< body >
< form  action = "http://127.0.0.1:5000"  method = "get" >
     用户名:< input  type = "text"  name = "name" >< br >
     年龄:< input  type = "text"  name = "age" >< br >
     性别:< input  type = "radio"  name = "gender"  value = "male" >男
         < input  type = "radio"  name = "gender"  value = "female" >女
     < br >
     < input  type = "submit"  value = "提交" >
</ form >
 
</ body >
</ html >



JS代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var  http = require( 'http' );
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
     //获取查询部分,第二个参数是true,所以得到了一个对象;否则,得到一个字符串
     var  queryObject = url.parse(req.url,  true ).query;
 
     //获得用户名
     var  name = queryObject.name;
     //获得年龄
     var  age = queryObject.age;
     //获得性别
     var  gender = queryObject.gender;
 
 
     res.end( '服务器收到了表单请求:' + name + ':'  + age + ':' +gender)
});
 
server.listen(5000,  '127.0.0.1' );



双击打开客户端的表单页面,录入信息以后,点击“提交”按钮

wKiom1hswEGSJnkTAAAcHD5GFjI012.png


提交以后获取到了用户信息:

wKiom1hswFeDZ7hKAAAbEI6_gX4780.png

本文转自   frwupeng517   51CTO博客,原文链接:http://blog.51cto.com/dapengtalk/1889020



相关文章
|
1月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
102 62
|
21天前
|
JavaScript 前端开发 索引
JavaScript获取url网址中域名后面的部分
如何截取 url 中网站域名之后的部分,需要用到以下几个方法:
71 3
|
1月前
|
存储 开发框架 JavaScript
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
55 0
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
|
1月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
37 2
|
2月前
|
数据采集 前端开发 数据安全/隐私保护
使用 urllib.parse 模块优雅地处理 URL
使用 urllib.parse 模块优雅地处理 URL
52 9
|
2月前
|
JavaScript 前端开发 Python
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
|
1月前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
30 0
|
1月前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
20 0
|
1月前
|
JavaScript 前端开发 应用服务中间件
Node.js Web 模块
Node.js Web 模块
|
设计模式 JavaScript 前端开发