详解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,对 ...
随机推荐
- Python学习Day2笔记(字符编码和函数)
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...
- CQRS框架:AxonFramework 之 Hello World
Command Query Responsibility Segregation,CQRS 这个架构好象最近博客园里讨论得比较多,有几篇园友的文章很有深度,推荐阅读: CQRS架构简介 浅谈命令查询职 ...
- 【原】Spark之机器学习(Python版)(一)——聚类
kmeans聚类相信大家都已经很熟悉了.在Python里我们用kmeans通常调用Sklearn包(当然自己写也很简单).那么在Spark里能不能也直接使用sklean包呢?目前来说直接使用有点困 ...
- ajax的循环
一.业务需求 在开发中,当一个列表页面加载完成后,我需要根据列表每一项的id去服务器端获取对应的数据然后再把获取的数据赋给当前id对应的标签. 例如如下表格: 我有一系列的商品编号,我需要根据商品编号 ...
- java 过滤器
1.什么是过滤器? 过滤信息,执行的优先级高于 servlet 2.自定义过滤器的步骤 写一个普通java类,实现Filter接口 2.配置过滤器 web.xm中 import java.io.I ...
- List [][]
# -*- coding:utf-8 -*- L = [ ['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', ...
- Python NaN
NaN, Not a Number, 非数. 它即不是无穷大, 也不是无穷小, 而是python/numpy/... 觉得无法计算时返回的一个符号(自己的推测, 未考证(TODO)). import ...
- Python后台分页删除编辑查询
「POST 数据」通常指 POST 时 body 中的数据.而 QueryString (URL)中也有可以带参数(通常是 GET 时的参数).如果 POST 时同时存在 QueryString 和 ...
- [转]如何循序渐进向dotnet架构师发展
微软的DotNet开发绝对是属于那种入门容易提高难的技术.而要能够成为DotNet架构师没有三年或更长时间的编码积累基本上是不可能的.特别是在大 型软件项目中,架构师是项目核心成员,承上启下,因此RU ...
- SSH(Struts2+Spring4+HIbernate5)的简化
今天给大家带来的是一个简单的新闻发布系统 首先在学习过程中我是深有体会,做事情不要浮躁,不要想着一口吃下一个胖子, 最最重要的是理解,理解透了学什么东西都是随心所欲的. 开发环境:win10系统 jd ...