精华内容
下载资源
问答
  • 今天,彻底弄懂什么是URI

    千次阅读 2019-08-27 01:40:15
    又到了每周二的分享时间了,今天分享一下在网络协议中,URI的相关内容,因为在外面出差,头图没法做,就用以前的老图咯~(偷懒也这么理直气壮) URL是什么我想大家都知道,毕竟我们每天都接触着,那URI是什么呢? 那...

    又到了每周二的分享时间了,今天分享一下在网络协议中,URI的相关内容,因为在外面出差,头图没法做,就用以前的老图咯~(偷懒也这么理直气壮)

    URL是什么我想大家都知道,毕竟我们每天都接触着,那URI是什么呢?

    那我们先来看看,如果这世界上没有URI时,会变成什么样子呢?

    没有URI的情况下,我上传了一些资料要分享给你们,你们要怎样才能下载获取呢?

    首先,我得告诉你们用FTP协议访问naonao.com,端口是8090

    然后,告诉你们登陆用户名是Naonao,密码是Handsome

    登陆成功后,你们要进入到/Naonao/Source目录下,并且转换为二进制模式

    最后再下载如何避免过帅导致的烦恼.mp4的文件

    这要不是最后的文件太吸引我,这么麻烦的步骤,我才不想去倒腾呢

    可有了URI后,上面这些步骤,我们只需要在浏览器里直接输入ftp://Naonao:Handsome@naonao.com:8090/Naonao/Source/如何避免过帅导致的烦恼.mp4
    这样就可以直接下载网络上的资源了

    友情提示一下,上面的URI并不是一个完全正确的URI,因为最后面的中文没有进行转码,关于转码解码的问题,我们稍后再看

    什么是URI?

    看完上面的内容,URI解决了什么问题,我想各位心里肯定是有数了

    不过在了解URI之前,我们需要先简单了解下URL与URN

    URL在RFC1738(1994.12)中的定义是Uniform Resource Locator,表示资源的所在位置,期望提供查找资源的方法

    而URN在RFC2141(1997.5)中的定义是Uniform Resource Name,期望为资源提供持久的,位置无关的标识方式,并允许简单的将多个命名空间映射到单个URN命名空间

    直接说URN这种概念,有些人可能不大清楚是个什么东西,我说个例子,男生肯定清楚,比如磁力链接~嘻嘻,有没有回想起什么不可言论的东西?

    我在网上找了个葫芦娃的磁力下载地址,各位围观一下,有没有觉得这东西很眼熟呢?

    magnet:?xt=urn:btih:bdab9b6759950fab3c8cbde2669bea6195491034

    好咯,不熟悉也没事,这也不是今天的重点,我们知道这玩意大概长城这样就好了。我们现在来看看,URI的定义是什么

    URI的全名呢就是Uniform Resource Identifier,主要用于区分资源,它包含了URL与URN的概念,主要是用于取代URL和URN的概念~

    换句话说,URI可以是URL/URN,但URL/URN不一定就是URI,也就是说URI是URL/URN的超集

    URI与URL的区别

    虽然我们现在知道URI是URL的超集,但在网络中,URL与URI这哥俩长的实在太像了,很多时候我们傻傻分不清URL与URI到底谁是谁

    我们先来看看定义的区别,URI与URL不同的部分就是IdentifierLocator,URI注重的是唯一标识符,而URL注重的是位置

    打个简单的比喻,如果用URI来表述我们自己,那么URI就是我们的身份证号码,URL就是我们身份证上的家庭住址,通过身份证号(URI)肯定能找到我,但是你通过我的住址(URL)那就不一定能找到我了哦

    再来说说资源包含了什么

    资源这俩字,包含的东西就太广了,既可以是图片、文档,也可以是今天的天气

    也可以是不能通过互联网访问的实体,例如人、公司

    也可以是某种抽象概念,例如亲属关系或者你是不是渣男

    但是要注意一点,URI并不是与资源一一对应的,一个资源是可以拥有很多个URI,但一个URI只会对应一个资源,就像我们手上有很多张银行卡,但每个银行卡对应的开户人,也只有我们自己一个人

    Identifier的实际用处就是将当前资源与其它资源区分开来的名称

    通过IdentifierSource的含义,我们就可以很明显的感觉到URI的一个目标,它更倾向于资源提供者把自己把所拥有的资源与其它资源区分开

    比如不能通过互联网访问的实体,比如人,我们就可以通过URL去定义Mine,Father,Relationship等,通过这种方式,我们就能将我们想表达的资源进行区分

    URI的组成

    先上张图,我们来看看URI由哪些部分组成

    我们根据图片上的内容来进行分析

    我们先来看最重要的三点,先拿个例子,看完例子再看下面的说明

    https://naonao.com?name=naonao&age=18#page-7

    Scheme

    Scheme指的就是方案,比如HTTPHTTPSFTP等,都是可以使用的,思想不要被这些常用的协议给局限了,我们还可以自定义协议,只要服务器支持即可

    Scheme可以是由字母数字+-.,都是允许的

    注意:在Scheme之后,必须使用://把Scheme与后面的部分区分开来

    Query

    query就是查询参数,是一个可选的参数,如有有的话,那么必须要以?开头

    我们最常用的形式就是使用key=value,比如上面的例子name=naonao

    但Query并不仅仅是支持这种,它是可以支持pchar,/,?等形式

    ?的话大家都知道,要使用Query查询参数,那么就必须在前面加上?,而pchar是什么呢?这点我们想了解的话,需要去参考RFC中的详细描述,这不是今天内容的重点

    fragment

    fragment也是可选的,如果有的话,必须以#开头

    比如上面的示例,page-7指向的是一个段落

    它所支持的格式跟Query所支持的格式一致

    authority

    authority包含了用户名与密码(user infomation),还有主机名(host),以及端口号(port)

    像用户名密码这东西,我们现在基本已经不使用这种方式了,因为在URI中明文传输账号密码,实在不安全

    现在还在用的,基本上也就是经常使用ftp下载资源时我们才使用

    所以我们通常只使用host:port,即主机名+端口号的形式

    主机名是不可省略的,因为一但省略,我们就找不到对应的服务器

    而端口号我们却可以省略,比如HTTP的默认端口号就是80端口,HTTPS的默认端口号就是443端口

    path

    主机名后面紧跟的就是我们的path

    在URI中,path部分必须要以/开头,所以不要把path之前的/误以为是前面authority的结尾

    path也分了很多种,分别是path-abemptypath-absolutepath-noschemepath-rootlesspath-empty

    • path-abempty
      /开头的路径或空路径
    • path-absolute
      /开头,但不能以//开头
    • path-noscheme
      以非:号开头的路径
    • path-rootless
      相对path=noscheme,增加允许以:号开头的路径
    • path-empty
      空路径

    说这么多种path只是为了尊重文档,但也别看有这么多种类型,其实使用起来是非常简单的,综合上述五种方案,我们可以发现,限制的都是开头的字符

    而我们只要不使用中文或者其它一些特殊字符作路径的开头,这样我们的路径都是合法的

    所以路径这东西,我们只要根据实际情况进行填写即可

    URI的编码

    终于到了填坑时间

    最开始我们举例说如果世上没有URI时该如何下载资源,我给出的例子URI里面带了中文,其实在URI里只能使用ASCII码

    但如果我们的URI里出现了除ASCII码以外的内容,或者是出现了URI中的用于标识的字符比如?``#``/``&等,那么就会引起URI解析错误,那这时候该怎么办呢?

    为了避免这种情况出现,URI引入了编码机制

    规则非常的简单粗暴,在ASCII码表内的特殊字符,直接就转换成ASCII码

    对于ASCII码以外的内容,就转换成十六进制的字节,然后在前面加上一个%,例如空格就被转义成%20?被转译成%3F

    像中文这种,十六进制字节值表示不全,需要UTF-8编码才能表述完整的,就是转成十六进制(UTF-8)的格式,例如闹闹就会被转义成%e9%97%b9%e9%97%b9

    因为对应的十六进制UTF-8的编码就是E9 97 B9,然后每个字节码前面加上%,就可以得到上述结果了

    平时我们在浏览器中的地址栏中输入的URI,就算是输入中文也能正常使用,其实是浏览器在背后帮我们做了转码解码的苦逼活

    这其实是一个非常友好的用户体验,不会把一些看不懂的东西直接展示给用户,也是非常值得学习的一个理念

    写在最后

    URI是网络协议学习中必须要弄明白的一个内容,但其实总的来说并不难,只是概念性的东西稍微多了点,理解了之后,其实就是一点点内容

    你可能会问,这东西学了有什么用呢?我只能回答你,学这东西没有直接用处,但是有间接用处

    比如做后台开发的,要对接接口,给的URI若不规范,那么接口调用方就无法定位到我们的资源,最后面向Google编程老半天才解决

    又或者做前端开发的,接口调用不规范,比如GET调用时query参数写错,那自然也调不通后台给的接口

    又比如拿到一个不熟悉的项目,通过浏览器的Network就可以分析到用了哪些资源,依赖了什么页面和接口,但连URI都看不懂,那就只能问同事了,问完后还要被人一顿嫌弃

    虽然遇到的这些问题都能面向Google编程或者问同事解决,但是在查资料或者咨询的同时,浪费的是我们的时间以及同事的时间

    展开全文
  • URI概念的简单介绍

    2020-11-10 21:04:02
    URI全称是Uniform Resource Identifier 统一资源标识符 通俗说,就是一个类似身份证号码的字符串,只不过它是用来标识资源(如:邮件地址,主机名,文件等) URI 具有特定的规则: [scheme]:[scheme-specific-part][#...

    既然有了java.io来操作资源流;但是对于网络的资源,该怎么打开,怎么定位呢?答URI-URL
    URI全称是Uniform Resource Identifier 统一资源标识符
    通俗说,就是一个类似身份证号码的字符串,只不过它是用来标识资源(如:邮件地址,主机名,文件等)
    URI 具有特定的规则: [scheme]:[scheme-specific-part][#fragment] 进一步细入划分可表示为[scheme]:[//authority][/path][?query][#fragment],其中模式特定部分为authority和path、query;而authority可以看做域名,如www.baidu.com终极细分则是[scheme]:[//host:port][/path][?query][#fragment],和日常见到的地址链接一模一样了
    模式特定部分(scheme-specific-part)的形式取决于模式,而URI的常用模式如下 ftp:FTP服务器file:本地磁盘上的文件http:使用超文本传输协议mailto:电子邮件的地址telnet:基于Telnet的服务的连接Java中还大量使用了一些非标准的定制模式,如rmi、jar、jndi、doc、jdbc等
    在java中URI抽象为java.net.URI类,下面列举几种常用构造方法
    //根据str生成URI
    public URI(String str) throws URISyntaxException
    public URI(String scheme, String authority,
    String path, String query, String fragment)throws URISyntaxException
    public static URI create(String str) //调用 URI(String str)
    JAVA.URI的常用操作方法
    public String getScheme() //获取模式
    public String getSchemeSpecificPart()//获取模式特定部分
    public String getFragment() //获取片段标识符
    //以上三个方法是通用的
    public String getAuthority() //授权机构,如www.baidu.com
    public String getHost() //获取主机部分,如127.0.0.1
    public int getPort() //如8080
    public String getPath() //定位路径
    public String getQuery() //查询条件

    展开全文
  • URI全称是Uniform Resource Identifier。中文翻译是统一资源标识符。最通常用在URL上来指定Web上资源文件的具体位置。它表示的是在web上可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

     异常信息先贴上:

    java.lang.IllegalArgumentException: URI is not absolute

    问题其实很简单,也很直白。就是URI不是一个绝对的URI。

    解决问题的思路也很简单,吧URI变成一个绝对的URI就可以了。

    一般产生这样的问题主要是你的URI写错了。最主要的问题应该是漏掉了前面的协议部分(根据历史编码经验)。

    感兴趣的可以看下什么是URI,不感兴趣的可以直接点赞跑路。


    - - - - 我不是邪恶的分割线 - - - - -


     URI是什么?

    URI的全称是Uniform Resource Identifier。中文翻译是统一资源标识符。最通常用在 URL 上来指定Web上资源文件的具体位置。它表示的是在web上可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

    直白讲,就是你的文件的路径全称。通过这个标识符,可以唯一识别到你这个资源用的。

    URI的结构组成

    URI通常由三部分组成:

    1. 资源的协议;
    2. 存放资源的主机名;
    3. 资源自身的名称。

    (注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)

    例如:http://www.baidu.com/test/a.txt

    协议:http

    主机名:www.baidu.com

    资源名称:/test/a.txt

    好了,看到这里,基本上对URI 有了个基本的了解了。

    至于URL,你可以理解为它是URI的一个子集就好了。

    展开全文
  • URI,URL,URN分别是什么意思

    千次阅读 2019-04-19 11:32:55
    URL代表资源的路径地址,而URI代表资源的名称。 URI = Universal Resource Identifier 统一资源标志符 URL是URI的一个子集,告诉我们访问网络位置的方式 URN是URI的子集,包括名字(给定的命名空间内),但是不包括...

    URL代表资源的路径地址,而URI代表资源的名称。
    URI = Universal Resource Identifier 统一资源标志符
    URL是URI的一个子集,告诉我们访问网络位置的方式
    URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式
    (URN 和 URL 都是URI的子集)

    URL = Universal Resource Locator 统一资源定位符
    URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。

    URN = Universal Resource Name 统一资源名称
    我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体

    展开全文
  • uri:统一资源标识符,全称:Uniform Resource Identifier。是一种网络资源描述方式,解决的问题是:如何在网络上标识一个资源?这些资源包括各种文本,图片,音视频等。 url:统一资源定位符,全称:Universal ...
  • URL和URI的区别

    2018-12-04 17:21:50
    URI全称为uniform resource identifier ,译为统一资源标识符 URL全称为uniform resource locator,译为统一资源定位符 URI的组成:协议名称://域名.根域名/目录/文件名.后缀 URL的组成: 第一部分是协议(或...
  • URI和URL的区别

    2017-11-19 16:28:38
    URI全称:uniform resource identifier,统一资源标识符 URL全称:uniform resource locator,统一资源定位器 用一张图来说明URI和URL的区别吧 从这幅图中,我们可以看到URL只是URI的一个子集。 ...
  • 1.URL,URI,URN定义 URI(Uniform Resource Identifier):统一资源标识符 URL(Uniform Resource Locator):统一资源定位符 URN(Uniform Resource Name):统一资源名称 2.URL,URI,URN的关系 URL和URN都是...
  • - URI全称是Uniform Resource Identifier,也就是统一资源标识符,它是一种采用特定的语法标识一个资源的字符串表示。 - URI所标识的资源可能是服务器上的一个文件,也可能是一个邮件地址、图书、主机名等。简单记...
  • 浅谈 URI 及其转义

    千次阅读 2019-02-12 14:26:24
    URI全称是 Uniform Resource Identifiers,即统一资源标识符,用于在互联网上标识一个资源,比如 https://www.upyun.com/products/cdn 这个 URI,指向的是一张漂亮的,描述又拍云 CDN 产品特性的网页。...
  •  REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:...
  • 英文全称是Uniform Resource Identifier,中文称为“统一资源标识符”,是一个用于标识某一互联网资源名称的字符串。 简单来讲就是区分不同网络资源的标识符号。用一个形象的比喻——假如网络资源是一个个不同的人,...
  •   1、URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。   2、URL全名为Uniform Resource Locator(统一资源定位),通过...
  • Java网络编程-URI和URL

    2018-10-03 18:51:00
    前提 前面的一篇文章《Java中的Internet查询》分析完了如何通过IP地址或者主机名确定主机在...URI全称是Uniform Resource Identifier,也就是统一资源标识符,它是一种采用特定的语法标识一个资源的字符串表示。U...
  • URI ,英文全称Uniform Resource Identifier(统一资源标识符),是一个用于标识某一互联网资源名称的字符串。 URL ,英文全称Uniform Resource Locator(统一资源定位符),是一种URI,它标识一个互联网资源,并...
  • Uri工具类介绍 UriMatcher工具类介绍 ContentUris介绍
  • URL和URI

    2019-05-06 17:58:39
    URL和URIURL 统一资源定位符URN 统一资源名称URI 统一资源标识符联系与区别总结 URL 统一资源定位符 URL 英文全称为 Uniform Resource Locator,中文为翻译“统一资源定位符”,是Internet上资源的地址,可以定义为...
  • URI类与URL类概述与实例

    千次阅读 2017-09-07 11:22:05
    关于URI类与URL类的概述与实例展示
  • HTTP基本原理之URI和URL

    2021-03-04 14:14:52
    URI,URL 在理解HTTP之前,我们先来看看URI和URL。我们经常听到两个术语:URI和URL。URI被称为 Uniform Resource Identifier,统一资源标识符。URL被称为Universal Resource Locator,统一资源定位器。 比如GitHub的...
  • 关于JAVA中URI和URL的区别的理解

    千次阅读 2017-06-21 17:42:13
    英文全称是UniformResource Identifiers。 一些URI的例子: mailto:java-net@java.sun.com news:comp.lang.java urn:isbn:096139210x http://java.sun.com/j2se/1.3/ docs/guide/collections/...
  • 图片编码 Base64 与 DataURI

    千次阅读 2017-04-02 11:25:24
    1、DataURI,通常就被叫做DataURL,是因为图片被base64编码之后,这串码可以用浏览器直接打开,类似于一个网站URL 2、DataURI的格式:  data:[] ( [;charset=] ) [;base64],码内容   标识头, 展现方式 
  • 在互联网上就是通过URI来访问互联网上的资源的。 URI 是怎么样表示的呢?其实 URI 还分出来了两个子类型,一个是我们常听到的 URL ,另一个就是URN。 URL URL ,跟 URI 的名字有点接近,全称是 Unform Resource ...
  • 一次搞懂 URI、URL、URN

    2020-12-13 20:45:34
    一次搞懂 URI、URL、URN 文章目录一次搞懂 URI、URL、URN简介参考正文名词解释URI 格式URL 格式URN 格式结语 简介 在使用网络相关的 API 又或是信息传输、甚至微服务配置时常常看到 URI、URL 交错着出现,而与之相似...
  • android Uri使用

    2019-07-05 03:59:32
    1.Uri 通用资源标志符(Universal Resource Identifier, 简称"URI")。 Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。 URI一般由三部分组成: 访问资源的命名...
  • Uri内部处理流程分析

    2018-08-18 20:24:44
    *本篇文章已授权微信公众号guolin_blog (郭霖) 独家发布   前几天在讨论一个很有趣的事情:同事在交流时发现Uri在parse生成时,在里面加入一段其他无关的字符串...Uri uri =Uri.parse("android.resource://...
  • 里面反复提到URI和URL,我的印象是他两个没有什么区别,最后发现其实差别确实不怎么大。 有各种解释,我想要bear in mind 的是web资源是存在server上的,你去访问,就好比你去楼里找人:1、你要知道你找的人的...
  • 深挖data URI性能瓶颈

    2018-05-04 14:56:32
    摘要:DataURI是一个富有争议的特性。...URI,不是URL我们习惯的URL的全称是统一资源定位符(uniformresourcelocator),它是由一个“协议”和一个“地址”组成。协议告诉浏览器或者程序用何种方式去获取这个资源,地址...
  • android7.0 获取uri

    千次阅读 2017-11-21 23:31:00
    android7.0 获取uriandroid7.0以后,使用Uri.fromFile会报FileUriExposedException异常,这是因为android7.0以后执行了更加严格的文件管理,要解决这一错误需要使用7.0新添加的FileProvide类,FileProvider官方文档...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,649
精华内容 8,659
关键字:

uri的全称是