Node.js 初识 URL 模块

简介:

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



相关文章
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
2月前
|
机器学习/深度学习 前端开发 JavaScript
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
43 0
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
|
7天前
|
域名解析 网络协议 JavaScript
【Node系列】node工具模块
Node.js有多个内置的工具模块,这些模块提供了用于执行各种任务的功能。
18 2
|
11天前
|
JavaScript
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
|
1月前
|
前端开发 JavaScript
|
1月前
|
JavaScript 前端开发
Node.js之path路径模块
Node.js之path路径模块
|
1月前
|
JavaScript
Node.js之http模块
Node.js之http模块
|
1月前
编程笔记 html5&css&js 020 HTML URL
编程笔记 html5&css&js 020 HTML URL
|
2月前
|
JSON JavaScript 前端开发
Python之JavaScript逆向系列——1、URL——传参
Python之JavaScript逆向系列——1、URL——传参
25 0
|
2月前
|
JavaScript 前端开发 网络协议
Python之JavaScript逆向系列——1、URL——域名
Python之JavaScript逆向系列——1、URL——域名
25 0