Node.js中的URL

时间:2023-03-09 03:29:53
Node.js中的URL

Node.js中的URL

什么是URL

URL是Uniform Location Resource的缩写,翻译为“统一资源定位符”,也就是描述资源位置的固定表示方法。被URL描述的资源可以位于互联网上,也可以位于本地。

URL的组成结构

基本URL包含模式(或者成为协议),服务器名(或IP地址),路径和文件名。

第一部分:协议

通过协议,可以获取打开URL的方式,最常见的协议是http,从网上查到的协议如下:

http 超文本传输协议

https 用安全套接字层传送的超文本传输协议

ftp 文件传输协议

mailto 电子邮件地址

ldap 轻型目录访问协议搜索

file 本地文件

news Usenet新闻组

gopher Gopher协议

telnet Telnet协议

第二部分:地址与路径

文件所在的服务器名称+端口号/用户名密码+文件的路径+文件本身的名称

当URL没有给出对应的文件名是,一般访问默认的文件名,例如index.html或default.html

Nodejs中的URL

URL对象的成员

URL对象中的成员如下:

  • href 被传入的未经解析的URL地址,包含协议(protocol)、主机名(host)等,都表示为小写
  • protocol 请求的协议名称,表示为小写,如‘http:’
  • slashes 冒号后的斜线,值为true或false
  • host 主机及端口的全部信息,例如‘host.com:8080’
  • auth 身份验证信息,例如‘user:pass’
  • hostname 主机名,例如‘host.com’
  • port 端口号,例如‘8000’
  • pathname 路径名,在主机名之后,查询语句之前的地址部分,包含‘/’,例如‘/p/a/t/h’
  • search URL地址的查询部分,包括开头的问号,例如‘?query=string’
  • path 路径名与查询的串联,没有经过解码,例如‘/p/a/t/h?query=string’
  • query 查询部分的参数,或者解析后的查询字符串,例如‘query=string’或者{'query':'string'}
  • hash URL地址中‘#’字符后的片段
URL对象中的函数
  • url.format(urlObj) 将一个URL对象转化成格式化的URL地址

  • url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 将一个URL地址解析为一个URL对象,第二个参数传入布尔值,表示是否解析查询字符串,(第三个参数传入布尔值,表示pathname是否去除host,这个官方文档说明没有完全看明白,后面测试一下)

  • url.resolve(from, to) 将from指向的URL转换到to,例如

·

1
2
3
url.resolve('/one/two/three', 'four')         // '/one/two/four'
url.resolve('http://example.com/', '/one') // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'

通过代码测试

测试环境:node.js 4.2.4

经测试,第二和第三个参数无效。

代码为URLTest.js

1
2
var url = require('url');var addr = 'http://www.baidu.com';
console.log(url.parse(addr));

运行结果为:

1
2
3
4
D:\MyHTML\MyJS\URLTest>node URLTest.jsUrl {  protocol: 'http:',  slashes: true,
auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com',
hash: null, search: null, query: null, pathname: '/', path: '/',
href: 'http://www.baidu.com/' }