当前位置: 首页 > news >正文

URL与URI:互联网世界的“门牌号“与“身份证“

前言:一个快递员的困惑

想象你是一位快递员,站在巨大的城市中。客户告诉你:“把包裹送到良辰那里”。你一脸茫然——哪个良辰?住在哪?这时客户补充:“海淀区幸福小区13号楼14单元520室的 程序员良辰”。瞬间,地址明确了!
在互联网世界,URL和URI就是这样的"地址系统"。让我们揭开它们的神秘面纱。

URI:互联网的"身份证"系统

URI(Uniform Resource Identifier),统一资源标识符,是互联网上资源的"身份证"。就像每个人都有唯一的身份证号,每个网络资源也有唯一的URI。


URI的组成部分就像是一个完整的邮寄地址:

  • scheme(方案):相当于"快递公司",如http、ftp、mailto等协议
  • authority:通常是域名,像"幸福小区"
  • path:资源路径,好比"海淀区幸福小区13号楼14单元520室"
  • query:查询参数,如同"收件人:程序员良辰"
  • fragment:片段标识,类似"请放在门口快递柜"
URI uri = new URI("https://www.example.com:8080/path/to/resource?name=value#section");
System.out.println("Scheme: " + uri.getScheme());
System.out.println("Host: " + uri.getHost());
System.out.println("Path: " + uri.getPath());

URL:不只是"地址"

URL(Uniform Resource Locator),统一资源定位符,是URI的子集。如果说URI是身份证,那么URL就是身份证+GPS定位。
一个经典的URL例子:
https://www.example.com:443/path/page.html?search=java#results
这就像:

  • https:乘坐加密的装甲车(而非普通的http卡车)
  • www.example.com:443:去往"example大厦"的443号特殊入口
  • /path/page.html:大厦内的具体房间位置
  • ?search=java:进入房间后要查询的关键词
  • #results:直接跳转到页面中的"结果"部分

🍚🍚🍚 小知识:

  • ​​URI​​ 是一个更广泛的概念,用于唯一标识任何资源(如网页、文件、书籍等),无论其是否存在或如何访问。它包括两类子集:
    • URL​​:通过协议、主机名、路径等具体定位资源(如 https://example.com/page)。
    • URN​​:仅通过名称标识资源(如 urn:isbn:0451450523),不依赖位置。
  • ​​URL​​ 是 URI 的一种具体形式,必须包含访问资源的机制(如 HTTP、FTP 等协议),因此所有 URL 都是 URI,但 URI 不一定是 URL(例如 URN

类比理解(URI与URL)

  • 图书馆系统:

    • URI:图书的ISBN号(唯一标识)
    • URL:图书馆+书架号+层数(具体位置)
  • 外卖订单:

    • URI:订单编号
    • URL:餐厅地址+取餐柜台号
// URI就像类的全限定名
com.example.project.ClassName
// URL则是这个类在JVM中的实际位置
jar:file:/path/to/project.jar!/com/example/project/ClassName.class

深度探索:从URI到互联网架构

  • URI 与 RESTful API:
    REST架构的核心就是"资源"和"URI"。每个资源都有唯一URI,通过HTTP方法操作:

  • URI编码的奥秘:
    • 为什么URL中不能有空格?因为要遵循URI规范。空格会被编码为%20:
    • 但是在Java中,URLEncoder.encode方法默认遵循HTML4标准,会将空格编码为+号而非%20
    public static void main(String[] args) throws UnsupportedEncodingException {String encoded = URLEncoder.encode("程序员 良辰", "UTF-8");System.out.println(encoded);}
// 结果为:%E7%A8%8B%E5%BA%8F%E5%91%98+%E8%89%AF%E8%BE%B0
  • URI与安全:
    • http:// vs https://:后者是加密通道
    • 敏感信息不应放在URL中(会被浏览器历史记录)
  • 现代Web中的URI设计
    • 语义化URI:/products/1314 比 /page.php?id=1314 更友好
    • 可读性:/blog/2025/url-vs-uri 比 /p=1314/uvu 更直观

Java中的应用

  • Java.net包中的神器:
URL url = new URL("https://example.com");
try (InputStream in = url.openStream()) {// 读取网络资源
}
  • Spring框架中的URI处理:
UriComponentsBuilder.fromUriString("https://example.com").path("/api").queryParam("name", "value").build().toUri();
  • JAX-RS中的URI模板:
@Path("/users/{userId}")
public class UserResource {@GETpublic String getUser(@PathParam("userId") String id) {// ...}
}

专业术语

  • URI:遵循RFC 3986标准的统一资源标识符,采用<scheme>:[//<authority>]<path>[?<query>][#<fragment>]结构

  • URL:作为URI的子集,不仅标识资源还提供定位机制,包含协议、主机、端口等网络定位信息

  • URN:统一资源名称,属于URI但不提供定位功能(如urn:isbn:0451450523)

  • IRI:国际化资源标识符,支持Unicode的URI扩展

在Java生态中java.net.URI遵循URI规范,而java.net.URL类除了标识还包含资源访问能力,但因其可变性等问题,现代Java开发更推荐使用URI结合其他HTTP客户端。

互联网的命名哲学

  • URI/URL的设计体现了计算机科学中的抽象之美——用简单的字符串表达复杂的资源关系和网络拓扑。就像哲学家给万物命名,程序员用URI为数字世界的一切赋予身份和地址。下次当你在浏览器中输入URL时,不妨想想:这不仅是地址,更是整个互联网架构的缩影。

  • 正如计算机科学家Tim Berners-Lee所说:“URI是网络中最基础、最强大的想法之一——简单到可以写在餐巾纸上,却强大到能够定位整个互联网。”

http://www.lryc.cn/news/600773.html

相关文章:

  • DocC的简单使用
  • ICMP报文工作原理
  • Linux如何执行系统调用及高效执行系统调用:深入浅出的解析
  • Python 数据分析(二):Matplotlib 绘图
  • 斐波那契数列加强版 快速矩阵幂
  • 特产|基于SSM+vue的南阳特产销售平台(源码+数据库+文档)
  • Linux 系统调用详解:操作文件的常用系统调用
  • SSE (Server-Sent Events) 服务出现连接卡在 pending 状态的原因
  • 2025微前端架构研究与实践方案
  • JavaScript里的string
  • 前端设计中如何在鼠标悬浮时同步修改块内样式
  • 【机器学习深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
  • k8s的nodeport和ingress
  • 什么是JUC
  • Voxtral Mini:语音转文本工具,支持超长音频,多国语音
  • 9.3 快速傅里叶变换
  • Docker常用命令详解:以Nginx为例
  • gig-gitignore工具实战开发(五):gig add完善
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词评论查询功能实现
  • Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
  • Android ADB命令之内存统计与分析
  • Java学习|黑马笔记|Day23】网络编程、反射、动态代理
  • 深入理解C语言快速排序与自省排序(Introsort)
  • 安卓服务与多线程
  • 学习嵌入式的第三十天-数据结构-(2025.7.21)网络编程
  • 系统性学习C语言-第二十三讲-文件操作
  • 台式电脑有多个风扇开机只有部分转动的原因
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • Nacos-服务注册,服务发现(二)
  • 八股文整理——计算机网络