稳定性: 3 - 稳定

这个模块包含分析和解析 URL 的工具。调用 require('url') 来访问模块。

解析 URL 对象有以下内容,依赖于他们是否在 URL 字符串里存在。任何不在 URL 字符串里的部分,都不会出现在解析对象里。例子如下:

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

  • href: 准备解析的完整的 URL,包含协议和主机(小写)。

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

  • protocol: 请求协议, 小写.

    例子: 'http:'

  • slashes: 协议要求的斜杠(冒号后)

    例子: true 或 false

  • host: 完整的 URL 小写 主机部分,包含端口信息。

    例子: 'host.com:8080'

  • auth: url 中的验证信息。

    例子: 'user:pass'

  • hostname: 域名中的小写主机名

    例子: 'host.com'

  • port: 主机的端口号

    例子: '8080'

  • pathname: URL 中的路径部分,在主机名后,查询字符前,包含第一个斜杠。

    例子: '/p/a/t/h'

  • search: URL 中得查询字符串,包含开头的问号

    例子: '?query=string'

  • path: pathnamesearch 连在一起

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

  • query: 查询字符串中得参数部分,或者使用 querystring.parse() 解析后返回的对象。

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

  • hash: URL 的 “#” 后面部分(包括 # 符号)

    例子: '#hash'

URL 模块提供了以下方法:

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

输入 URL 字符串,返回一个对象。

第二个参数为 true 时,使用 querystring 来解析查询字符串。如果为 truequery 属性将会一直赋值为对象,并且 search 属性将会一直是字符串(可能为空)。默认为 false

第三个参数为true ,把 //foo/bar 当做{ host: 'foo', pathname: '/bar' } ,而不是{ pathname: '//foo/bar' }。默认为 false

url.format(urlObj)

输入一个解析过的 URL 对象,返回格式化过的字符串。

格式化的工作流程:

  • href 会被忽略
  • protocol 无论是否有末尾的 : (冒号),会同样的处理
    • http, https, ftp, gopher, file 协议会被添加后缀://
    • mailto, xmpp, aim, sftp, foo, 等协议添加后缀:
  • slashes 如果协议需要 ://,设置为 true
    • 仅需对之前列出的没有斜杠的协议,比如议 mongodb://localhost:8000/
  • auth 如果出现将会使用.
  • hostname 仅在缺少 host 时使用
  • port 仅在缺少 host 时使用
  • host 用来替换 hostnameport
  • pathname 无论结尾是否有 / 将会同样处理
  • search 将会替代 query属性
    • 无论前面是否有 / 将会同样处理
  • query (对象; 参见 querystring) 如果没有 search,将会使用
  • hash 无论前面是否有#,都会同样处理

url.resolve(from, to)

给一个基础 URL, href URL,如同浏览器一样的解析它们可以带上锚点,例如:

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 URL的更多相关文章

  1. node.js url模块

    URL url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) url.format(urlObj) url.resolve(from, ...

  2. Node.js——url模块

    url模块通过api可以将get提交的参数方便的提取出来

  3. Node.js 发送Email

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  4. Node.js 文件系统模块

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  5. Node.js 介绍

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  6. node.js 针对不同的请求路径(url) 做出不同的响应

    边看这个边写的: http://wenku.baidu.com/link?url=C4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM ...

  7. Node.js中的URL

    Node.js中的URL 什么是URL URL是Uniform Location Resource的缩写,翻译为"统一资源定位符",也就是描述资源位置的固定表示方法.被URL描述的 ...

  8. node.js (01http 模块 url 模块)

    // 引入 http 模块-->Node.js 中的很多功能都是通过模块实现. var http = require('http'); // http.createServer() 方法创建服务 ...

  9. 用node.js写个在Bash上对字符串进行Base64或URL的encode和decode脚本

    一:自己这段时间经常要用到Base64编码和URL编码,写个编译型语言有点麻烦干脆就用node.js弄了个,弄好后在/etc/profile里加上alias就能完成工具的配置,先上代码: functi ...

随机推荐

  1. POJ-2421 Constructing Roads---确定部分边的MST

    题目链接: https://vjudge.net/problem/POJ-2421 题目大意: 还是给你n个点,然后求最小生成树.特殊之处在于有一些点之间已经连上了边. 思路: 和POJ-1751一样 ...

  2. 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!

    在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...

  3. 学习React系列(十)——Render Props

    解决问题:将行为封装,供多个组件使用(在多个组件之间分享某段代码) 组件中的props属性中包含一个"render"属性(该属性为一个返回值为元素的方法),然后在该组件的rende ...

  4. WPF中自定义GridLengthAnimation

    需求 我们想在编辑一个列表中某一个条目时,将编辑的详情内容也放置当前面,比如右侧. 可以通过将一个Grid,分成两个Cloumn,动态调整两个Cloumn的Width,就可以实现这个需求. 我们知道, ...

  5. WebGL文字渲染的那些问题

    THREE.js开发的应用运行在iphone5下发现有些时候会崩溃,跟了几天发现是因为Sprite太多频繁更新纹理占用显存导致的.通常解决纹理频繁更新问题就要用到one draw all方法,放到纹理 ...

  6. javaScript系列 [04]-javaScript的原型链

    [04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...

  7. laravel5.5 使用alipay SDK报错Cannot redeclare Encrypt() (previously declared in ../vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:448)

    错误现象: 在laravel5.5 中,使用alipaySDK 报错: Cannot redeclare Encrypt() (previously declared in ../vendor/lar ...

  8. python读取excel时,数字自动转化为float

    xlrd模块去读excel时会将数字类型的自动转化为浮点数,这是一个小坑.在网上查了一下,该模块的作者也说过Excel treats all numbers as floats. In general ...

  9. HTML5 AJAX跨域请求

    HTML5新的标准中,增加了" Cross-Origin Resource Sharing"特性,这个特性的出现使得跨域通信只需通过配置http协议头来即可解决. Cross-Or ...

  10. Lazy Loading | Explicit Loading | Eager Loading in EntityFramework and EntityFramework.Core

    EntityFramework Eagerly Loading Eager loading is the process whereby a query for one type of entity ...