详解Node解析URL网址
前提给大家声明一下,我操作的环境是Mac终端下操作的.(前提是你先要下载好node.js)
说道URL 恐怕都不陌生,但是要说URL,就 必须先说下URI
URI是统一资源标识符,是一个用于标识某一互联网资源名称的字符串。由是三个组成部分:访问资源的命名机制、存放资源的主机名、资源自身的名称,由路径表示。
URL是统一资源定位,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
说完URL和URI的区别,我说说我们今天所要将的,如何在终端里,用node.js解析URL.
在官网上看他有3个可以调用的参数
1.url.parse(urlStr,[parseQueryStaing],[slashesDencteHost]) // 解析url 把他解析成一个对象
2.url.format(urlObj) // 把url格式化成一个字符串
3.url.resolve(form,to) // 也是 解析的 两个参数
首先,打开终端 输入node 然后输入url 在终端显示就是下面这样的
liuhaosheng:~ xalo$ node
> url
{ parse: [Function: urlParse],
resolve: [Function: urlResolve],
resolveObject: [Function: urlResolveObject],
format: [Function: urlFormat],
Url: [Function: Url] }
>
下来先介绍 在终端输入 url.parse() 弹出来下面内容
// url.parse()把url解析成对象
> url.parse('http://www.imooc.com/course/list?c=fe') // 这里面的网址是随便找的
Url {
protocol: 'http:', // 底层使用的协议
slashes: true, // 是否有协议的双斜线
auth: null,
host: 'www.imooc.com', // http 是服务器的ip地址或者是域名
port: null, // 端口 默认80
hostname: 'www.imooc.com', // 主机名
hash: null, // 哈希值 对应的是页面上的瞄点
search: '?c=fe', // 查询字符串参数
query: 'c=fe', // 发送给http的数据 等号分割的键值称为参数串 字符串
pathname: '/course/list', // 访问资源的路径名
path: '/course/list?c=fe', // 路径
href: 'http://www.imooc.com/course/list?c=fe' } // 没被解析的完整的超级链接
>
url.parse()带有两个参数
> url.parse('http://www.imooc.com/course/list?c=fe',true) //第一个参数地址 第二个参数指定说 解析query模块是用什么方法是用queryStr方法(true)
Url { // 还是 自带的url方法 (false)
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.imooc.com',
port: null,
hostname: 'www.imooc.com',
hash: null,
search: '?c=fe',
query: { c: 'fe' }, // 变成对象
pathname: '/course/list',
path: '/course/list?c=fe',
href: 'http://www.imooc.com/course/list?c=fe' }
>
url.parse()三个参数
> url.parse('//imooc.com/course/list') // 就是针对不知道请求的地址是什么协议的
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '//imooc.com/course/list',
path: '//imooc.com/course/list',
href: '//imooc.com/course/list' }
//////////下面是有三个参数的
> url.parse('//imooc.com/course/list',true,true)
Url {
protocol: null,
slashes: true,
auth: null,
host: 'imooc.com',
port: null,
hostname: 'imooc.com',
hash: null,
search: '',
query: {},
pathname: '/course/list',
path: '/course/list',
href: '//imooc.com/course/list' }
>
把刚才通过parse解析 得到的对象放在format里面,看能不能生成标准的url地址
> url.format({ //里面传入一个刚才通过parse解析得到的对象
... protocol: 'http:',
... slashes: true,
... auth: null,
... host: 'www.imooc.com',
... port: null,
... hostname: 'www.imooc.com',
... hash: null,
... search: '?c=fe',
... query: 'c=fe',
... pathname: '/course/list',
... path: '/course/list?c=fe',
... href: 'http://www.imooc.com/course/list?c=fe' })
'http://www.imooc.com/course/list?c=fe' //生成一个完整并且合法的url地址
>
在终端中输入 url.resolve
> url.resolve('http://www.imooc.com','/course/list?c=fe') //第一个参数是域名,第二个参数是 path 路径
'http://www.imooc.com/course/list?c=fe' // 然后回车就生成一个合法的域名
>
这就是node.js中的url解析,希望可以帮助到大家.
详解Node解析URL网址的更多相关文章
- 详解 Node + Redux + MongoDB 实现 Todolist
前言 为什么要使用 Redux? 组件化的开发思想解放了繁琐低效的 DOM 操作,以 React 来说,一切皆为状态,通过状态可以控制视图的变化,然后随着应用项目的规模的不断扩大和应用功能的不断丰富, ...
- 33 Python 详解命令解析 - argparse--更加详细--转载
https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...
- XML文件详解以及解析
转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...
- 详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...
- 【Java】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- [转]详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...
- 18张图,详解SpringBoot解析yml全流程
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml文件中配置了一个属性作为开关,再配合nacos就可 ...
- 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)
一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈 node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...
- Django 详解<二> 之url和view
Django URL(路由系统) RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...
随机推荐
- [LeetCode] Sqrt(x) 求平方根
Implement int sqrt(int x). Compute and return the square root of x. 这道题要求我们求平方根,我们能想到的方法就是算一个候选值的平方, ...
- C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞定: ...
- 实现数据库的跨库join
功能需求 首先要理解原始需求是什么,为什么要跨库join.举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid:而用户的详细信息放在主库main_ ...
- EncodingHelper
/// <summary> /// Url解码 /// </summary> /// <param name="str">原始字符串</p ...
- mybatis多对一关联
mybatis多对一关联查询实现 1.定义实体 定义实体的时候需要注意,若是双向关联,就是说双方的属性中都含有对方对象作为域属性出现, 那么在写toString()方法时需要注意,只让某一方输出即可, ...
- jquery 的一些基本操作
日常使用中的操作记录,持续更新中: ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...
- Atomikos的使用过程中要注意的事
在使用Atomikos过程中遇到的一些问题,以作记录: MySQL does not support TMJOIN MySQL does not allow for joining an existi ...
- Django models 操作高级补充
Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra
- ubuntu下载工具uget和aria2
一直想在ubuntu下找到个和迅雷差不多的下载工具.在网上找到了. 这篇文章完全是抄袭整理网上的. 我的系统版本是ubuntu14.04. 1.安装uget和aria2 sudo apt-get in ...
- linux安装Jenkins
一.下载jenkins 最新地址在:https://jenkins.io 我下载的是:Jenkins 2.35.war,下载好直接放到tomcat的webapp目录里,启动tomcat就可以运行了 二 ...