失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Node内置模块 【url模块与queryString】

Node内置模块 【url模块与queryString】

时间:2023-03-14 02:11:00

相关推荐

Node内置模块 【url模块与queryString】

文章目录

🌟前言🌟url 模块🌟 URL各部分说明🌟 将URL字符串转换为对象🌟 将对象格式化为URL字符串:url.format(urlObj)🌟 URL路径处理:url.resolve(from, to) 🌟 queryString 模块🌟 stringify🌟 parse 🌟写在最后

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天我们带领大家初识一下 Node内置模块url模块与queryString;让我们一起来看看吧🤘

🌟url 模块

该url模块提供了URL解析和分析工具。它可以使用:

var url = require('url');

🌟 URL各部分说明

┌─────────────────────────────────────────────────────────────────────────────────────────────┐│ href│├──────────┬──┬─────────────────────┬─────────────────────┬───────────────────────────┬───────┤│ protocol │ │ auth │ host │ path │ hash │││ │ ├──────────────┬──────┼──────────┬────────────────┤ │││ │ │ hostname │ port │ pathname │search│ │││ │ │ ││├─┬──────────────┤ │││ │ │ │││ │ query│ │" https: // user : pass @ : 8080 /p/a/t/h ? query=string #hash "││ │││ hostname │ port │││ │││ ││├──────────────┴──────┤││ ││ protocol │ │ username │ password │ host │││ │├──────────┴──┼──────────┴──────────┼─────────────────────┤││ ││ origin │ │ origin │ pathname │search│ hash │├─────────────┴─────────────────────┴─────────────────────┴──────────┴────────────────┴───────┤│ href│└─────────────────────────────────────────────────────────────────────────────────────────────┘

对于一个 URL 字符串,其组成部分会有所有不同,其中有些部分只有在URL字符串中存在时,对应字段才会出现在解析后对象中。以下是一个 URL 例子:

http://user:pass@:8080/p/a/t/h?query=string#hash

解析后对象字段如下:

🌟 将URL字符串转换为对象

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])

url.parse()方法用于解析URL对象,解析后返回一个JSON对象。示例如下:

var url = require('url');var urlString = 'http://user:pass@:8080/p/a/t/h?query=string#hash';var result = url.parse(urlString);console.log(result);# 输出结果如下{protocol: 'http:',slashes: true,auth: 'user:pass',host: ':8080',port: '8080',hostname: '',hash: '#hash',search: '?query=string',query: 'query=string',pathname: '/p/a/t/h',path: '/p/a/t/h?query=string',href: 'http://user:pass@:8080/p/a/t/h?query=string#hash'}

第二个可选参数设置为true时,会使用querystring模块来解析URL中德查询字符串部分,默认为 false。

var result = url.parse(urlString,true);输出结果如下{protocol: 'http:',slashes: true,auth: 'user:pass',host: ':8080',port: '8080',hostname: '',hash: '#hash',search: '?query=string',query: {query:"string"},pathname: '/p/a/t/h',path: '/p/a/t/h?query=string',href: 'http://user:pass@:8080/p/a/t/h?query=string#hash'}

第三个可参数设置为 true时,会把诸如 //foo/bar 这样的URL解析为{ host: 'foo', pathname: '/bar' }而不是{ pathname: '//foo/bar' }。 默认为 false。

🌟 将对象格式化为URL字符串:url.format(urlObj)

url.resolve()用于格式化URL对象。输入一个 URL 对象,返回格式化后的 URL 字符串。示例如下:

var url = require('url');var urlObj = {protocol: 'http:',slashes: true,hostname: '',port: 80,hash: '#hash',search: '?query=string',path: '/nodejs?query=string'}var result = url.format(urlObj);console.log(result);

输出结果如下

:80?query=string#hash/**传入的URL对象会做以下处理:**href 属性会被忽略*protocol无论是否有末尾的 : (冒号),会同样的处理*这些协议包括 http, https, ftp, gopher, file 后缀是 :// (冒号-斜杠-斜杠).*所有其他的协议如 mailto, xmpp, aim, sftp, foo, 等 会加上后缀 : (冒号)*auth 如果有将会出现.*hostname 如果 host 属性没被定义,则会使用此属性.*port 如果 host 属性没被定义,则会使用此属性.*host 优先使用,将会替代 hostname 和port*pathname 将会同样处理无论结尾是否有/ (斜杠)*search 将会替代 query属性*query (object类型; 详细请看 querystring) 如果没有 search,将会使用此属性.*search 无论前面是否有 ? (问号),都会同样的处理*hash无论前面是否有# (井号, 锚点),都会同样处理*/

🌟 URL路径处理:url.resolve(from, to)

url.resolve()方法用于处理URL路径,也可以用于处理锚点。示例如下:

url.resolve('/one/two/three', 'four') // '/one/two/four'url.resolve('/', '/one') // '/one'url.resolve('/one', '/two') // '/two'

🌟 queryString 模块

查询字符串主要由两个方法和内置格式化方法组成,一个是将对象转换为字符串,一个则是相反,将字符串转换为对象:

🌟 stringify

将JSON对象格式化为查询字符串格式的字符串,默认的分隔符为:“&”和“=”,具体可以看一下以下代码:

querystring.stringify({foo: 'bar', baz: ['qux', 'quux'], corge: '' })// returns'foo=bar&baz=qux&baz=quux&corge='querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')// returns'foo:bar;baz:qux'

🌟 parse

根据“&”和“=”将字符串进行分割,反序列化为JSON对象,而options包含的maxKeys默认设置为1000,如果将其设置为0则表示没这个限制。

querystring.parse('foo=bar&baz=qux&baz=quux&corge')// returns{foo: 'bar', baz: ['qux', 'quux'], corge: '' }

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

如果觉得《Node内置模块 【url模块与queryString】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。