首先在控制台(终端)开启Node模式,并打印出url来看一下:
从图中可以看出,它有 Url
、parse
、resolve
、resolveObject
、format
、URL
、URLSearchParams
、domainToASCII
、domainToUnicode
这么多模块。
那么这些模块有什么用呢?
我们来看看最终的效果:
首先输入http://localhost:3000之后的效果
之后是输入http://localhost:3000/?userName=perfect*&userAge=21的效果:
从图中可以看出
访问地址是:http://localhost:3000/?userName=perfect*&userAge=21 如果 执行 console.log(req.url),它将执行两次,分别返回下面的信息:
代码:
var url=require("url");//引入url模块 var http=require("http");//引入HTTP模块 //创建HTTP模块,因为URL的监听,需要HTTP模块的开启 //用HTTP模块创建服务 /* * req获取url信息(request) * res浏览器返回响应信息(response) * */ http.createServer(function(req,res){ var result=url.parse(req.url,true); console.log(result); /*Url{ protocol:null, slashes:null, auth:null, host:null, port:null, hostname:null, hash:null, search:'?userName=perfect*&userAge=21', query:{userName:'perfect*',userAge:'21'}, pathname:'/', path:'/?userName=perfect*&userAge=21', href:'/?userName=perfect*&userAge=21' } */ console.log(result.query.userName); console.log(result.query.userAge); // 设置 HTTP 头部,状态码是 200,文件类型是 html,字符集是 utf8 res.writeHead(200,{ "Content-Type":"text/html;charset=UTF-8" }); // 往页面打印值 res.write('<h1 style="text-align:center">欢迎来到perfect*博客园</h1>'); // 结束响应 res.end(); }).listen(3000);
使用 url 的 parse 方法parse 方法需要两个参数: 第一个参数是地址 第二个参数是 true 的话表示把 get 传值转换成对象
var result=url.parse(req.url,true);
可以通过 query
,获取到我们想要的路径字段。
比如说上面的代码中:
query:{userName:'perfect*',userAge:'21'},
将
var result=url.parse(req.url,true); console.log(result);
该段代码改为
console.log(url);
url模块所有内容显示:
Url: [Function: Url], parse: [Function: urlParse],//获取地址信息 resolve: [Function: urlResolve],//追加或者替换地址 resolveObject: [Function: urlResolveObject], format: [Function: urlFormat],//逆向parse,根据地址获取url信息 URL: [Function: URL], URLSearchParams: [Function: URLSearchParams], domainToASCII: [Function: domainToASCII], domainToUnicode: [Function: domainToUnicode], pathToFileURL: [Function: pathToFileURL], fileURLToPath: [Function: fileURLToPath] }
parse模块的使用;
代码:
console.log(url.parse("https://jiguiyan.cnblogs.com")) /*Url{ protocol:'https:', slashes:true, auth:null, host:'jiguiyan.cnblogs.com', port:null, hostname:'jiguiyan.cnblogs.com', hash:null, search:null, query:null, pathname:'/', path:'/', href:'https://jiguiyan.cnblogs.com' }
parse 带参数:
console.log(url.parse("http://www.baidu.com/new?name=zhangsan")); /** * Console: Url { protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com', hash: null, search: '?name=zhangsan', query: 'name=zhangsan', pathname: '/new', path: '/new?name=zhangsan', href: 'http://www.baidu.com/new?name=zhangsan' } */
format的使用:
效果图:
console.log(url.format({ protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com', hash: null, search: '?name=zhangsan', query: 'name=zhangsan', pathname: '/new', path: '/new?name=zhangsan', href: 'http://www.baidu.com/new?name=zhangsan' }))
resolve
的使用:
console.log(url.resolve("https://jiguiyan.cnblogs.com", "jiguiyan"));
更多关于url的学习可参考官网:http://nodejs.cn/api/url.html#url_class_url
博文学习来源:https://juejin.im/post/5c1f8e52f265da6170071e43