URI(统一资源标识符)
URI 是一种通用的资源标识方式,用于唯一标识资源(如文本、图像、视频、服务、文档等),以便定位或描述资源。
URI 的结构
一个标准的 URI 由以下部分组成:
scheme:[//authority]path[?query][#fragment]
- scheme: 协议或访问方式(如
http,ftp,mailto)。 - authority: 域名或 IP(可含端口号,如
example.com:8080)。 - path: 资源的具体路径(如
/images/photo.jpg)。 - query: 可选参数(如
?id=123&type=image)。 - fragment: 资源的某一部分(如
#section1表示页面的某部分)。
示例:
https://example.com/docs/tutorial.htmlmailto:user@example.com
URI 的分类
-
URL(统一资源定位符)
用于定位资源,包含访问协议和位置。
示例:https://example.com/page?id=123ftp://fileserver.com/resource.zip
-
URN(统一资源名称)
用于命名资源,不包含位置或访问方法。常用于长期标识不易改变的资源。
示例:- ISBN:
urn:isbn:9780131101630 - UUID:
urn:uuid:123e4567-e89b-12d3-a456-426614174000
- ISBN:
URI 的常见应用场景
-
Web 应用和 API
- URL 用于定位网页或接口资源。
- 示例:
- 网页:
https://www.google.com - API:
https://api.example.com/v1/users?status=active
- 网页:
-
电子邮件和通信
mailto用于标识电子邮件地址:mailto:user@example.com
-
永久标识资源(URN)
- 书籍(ISBN):
urn:isbn:9780131101630 - DOI(数字对象标识符):
urn:doi:10.1000/182
- 书籍(ISBN):
-
数据库连接
- PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MongoDB:
mongodb://user:password@host:port/database
- PostgreSQL:
-
文件系统和本地资源
- 标识本地文件:
file:///C:/Users/user/Documents/file.txt
- 标识本地文件:
-
物联网和服务发现
- 标识 IoT 设备:
coap://iot-device.local/sensor/temp
- 标识 IoT 设备:
-
语义网和知识表示
- 标识语义网中的实体:
http://example.org/resource/person123
- 标识语义网中的实体:
-
多媒体与流媒体
- 标识视频流:
rtsp://media.example.com/movie.mp4
- 标识视频流:
特殊类型的 URI
-
数据 URI
将小型数据直接嵌入 URI 中:<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."> -
Blob URI
用于本地生成的二进制数据:blob:http://example.com/550e8400-e29b-41d4-a716-446655440000 -
磁力链接(Magnet URI)
用于 P2P 文件共享:magnet:?xt=urn:btih:123456789ABCDEF
URN的作用(例:ISBN))
书籍(ISBN):urn:isbn:9780131101630
-
唯一性和标准化:
每本书籍的 ISBN 是唯一的,无论它以何种格式(纸质书、电子书、音频书)存在,ISBN 都不会变化。URN 将它转换为通用资源标识的一部分,便于在数字环境中引用。 -
位置无关性:
与 URL 不同,URN 只标识书籍,而不关心具体存放在哪个网站、数据库或书架上。例如,即使一本书换了出版商、电子书平台,URN 仍然有效。 -
长期有效:
URN 是一种持久标识符,即使资源本身不在原位置或存储介质改变,URN 仍可以用来描述和引用该资源。
URN(如 ISBN)是一种适用于长期引用和跨平台查询的标识符。它在图书馆管理、学术研究、数字出版和知识组织中发挥了重要作用,是一种不依赖于资源存储位置的“通用钥匙”。
URN (ISBN) 的使用场景
1. 图书馆和书籍管理
- 图书馆系统:
图书馆使用 URN (ISBN) 标识书籍,实现全球范围内的统一管理。即便书籍存储在不同的物理或数字位置,也能通过 ISBN 追踪和查询。 - 馆际互借:
当图书馆与其他机构合作(如馆际借阅)时,URN 提供了明确的参考,避免混淆相似书名的书籍。
2. 学术引用
- 学术论文和出版物中常用 URN (ISBN) 引用书籍,使引用的资源明确可查,确保学术成果的可验证性和长期有效性。
3. 电子书和数字出版
- 在电子书商店中,URN (ISBN) 用于标识同一本书的不同格式(如 PDF、EPUB、MOBI),帮助用户找到正确的版本。
- 数字版权管理(DRM)系统中,也用 ISBN 标识特定书籍的权限。
4. 书籍数据库和搜索引擎
- 数据库(如 Google 图书、Open Library)中用 URN (ISBN) 唯一标识书籍,方便跨平台查询。
- 搜索引擎可根据 ISBN 解析书籍的元数据(如书名、作者、出版年份)。
5. 零售和电商平台
- 图书零售商(如亚马逊)使用 ISBN 管理库存,通过 ISBN 确保客户买到准确的书籍。
- ISBN 支持商品条码系统,方便物流和销售跟踪。
6. 版本控制
- 当一本书的多个版本(修订版、国际版)同时存在时,URN (ISBN) 可以唯一标识某一具体版本,避免混淆。
7. 语义网和知识表示
- 在语义网(Semantic Web)中,URN (ISBN) 用作标识符,将书籍资源与其他数据集关联。例如,可以用 ISBN 连接一位作者的书籍与他的传记或学术贡献。
具体案例
-
学术机构:
某大学图书馆需要采购一本教材,通过urn:isbn:9780131101630可以在全球范围内找到精确的版本,而无需依赖特定书商的 URL。 -
电子书:
用户在亚马逊购买了一本电子书。如果更换设备或平台,只要提供 ISBN,仍然可以找到对应版本。 -
语义网查询:
查询一本书的相关作者、出版社或引用文献时,通过 ISBN 可以从多个数据库(如 WikiData、Open Library)检索到关联信息。
总结:
- URI 是统一的资源标识方式,用于准确描述、定位或命名资源。
- 分类: URL 用于定位,URN 用于命名,此外还有数据 URI、磁力链接等特定用途形式。
- 广泛应用于 Web、API、数据库、物联网、语义网等领域,为资源的访问和管理提供标准化支持。
归类
| 类型 | 示例 | 特点 | 用途 |
|---|---|---|---|
| URL | http://example.com, file:///path/to/file | 指定资源位置和访问方式 | 定位和访问资源 |
| URN | urn:isbn:9780131101630, urn:doi:10.1000/182 | 仅标识资源名称,不关心位置 | 永久标识资源 |
| 特殊URI | mailto:user@example.com | 标识通信地址,用于邮件协议 | 发起邮件通信 |
| 特殊数据 URI | data:[<mime type>][;charset=<charset>][;base64],<encoded data> | 将数据直接嵌入 URI 中,不依赖外部文件 | 嵌入图片、音频等小型资源 |
| 特殊Blob URI | blob:<origin>/<unique identifier> | 标识和访问内存中生成的临时二进制数据 | 通过 URL.createObjectURL() 方法生成,通常用于本地生成文件或处理文件流,而不依赖服务器 |
| 特殊Magnet URI | magnet:?xt=urn:btih:123456789ABCDEF&dn=example.txt | 基于内容哈希值的资源定位,用于 P2P 文件共享 | 在 P2P 文件共享网络(如 BitTorrent)中标识和下载资源 |
mailto:(电子邮件地址)
mailto:user@example.com 是一种特殊的 URI,既不是 URL,也不是 URN,而是另一个协议特定的 URI。它的作用是 标识电子邮件地址,并指明用邮件服务来处理。
mailto:的特点:- 表示一种通信地址,不直接提供访问资源的路径(不是 URL)。
- 不指向长期固定的资源(不是 URN)。
- 是一个基于
mailto协议的 URI,用于标识和启动电子邮件通信。
数据 URI:
原理:
- 数据 URI 将 小型数据直接嵌入 URI 中,而不是通过文件路径或网络请求获取资源。
- 数据内容被编码为 Base64 格式,并嵌入在 URI 中,通常用于嵌入图片、音频等小型资源。
结构:
data:[<mime type>][;charset=<charset>][;base64],<encoded data>
<mime type>:资源的类型,例如image/png、text/plain等。<charset>(可选):数据的字符编码(如 UTF-8)。base64(可选):标识数据经过 Base64 编码。<encoded data>:具体的编码数据内容。
特点:
- 不需要从服务器加载数据,适用于 嵌入小型资源。
- 对资源位置透明,数据直接嵌在文档中。
使用场景:
- HTML 内嵌图片:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."> - CSS 中嵌入背景图片:
background-image: url("data:image/png;base64,...");
Blob URI:
原理:
- Blob URI 是由浏览器生成的,用于表示本地创建的二进制大对象(Blob)。
- Blob URI 是一种 临时标识符,通过
URL.createObjectURL()方法生成,通常用于本地生成文件或处理文件流,而不依赖服务器。
结构:
blob:<origin>/<unique identifier>
<origin>:资源的来源域名,例如http://example.com。<unique identifier>:浏览器为该 Blob 生成的唯一标识符。
特点:
- 是一种 短暂的 URI,在页面刷新或会话结束后失效。
- 用于临时访问内存中的数据,例如用户上传的文件或动态生成的资源。
使用场景:
- 用户上传图片并预览:
const file = document.querySelector('input[type="file"]').files[0]; const url = URL.createObjectURL(file); document.querySelector('img').src = url; - 下载本地生成的文件:
const blob = new Blob(["Hello, world!"], { type: "text/plain" }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = "example.txt"; a.click(); URL.revokeObjectURL(url); // 释放内存
磁力链接(Magnet URI):
原理:
- 磁力链接是一种基于 内容哈希值 的 URI,用于 P2P 文件共享中标识资源。
- 资源的唯一标识符是 文件内容的哈希值,而不是文件的物理位置或路径。
结构:
magnet:?xt=urn:btih:<hash>&dn=<name>&tr=<tracker>
xt=urn:btih:<hash>:资源的哈希值(基于 BitTorrent 的 infohash)。dn=<name>(可选):文件的显示名称。tr=<tracker>(可选):用于加速下载的追踪服务器地址。
特点:
- 是一种 去中心化的资源定位方式,文件的下载依赖于其他用户(种子)共享的内容。
- 不需要固定的服务器,资源可通过分布式网络获取。
使用场景:
- 在 P2P 文件共享网络(如 BitTorrent)中标识和下载资源:
magnet:?xt=urn:btih:123456789ABCDEF&dn=example.txt
895

被折叠的 条评论
为什么被折叠?



