写点什么

RESTful 世界里的 Cool URI

  • 2008-04-16
  • 本文字数:1494 字

    阅读完需:约 5 分钟

假想一下,如果要以最小的集成代价实现一个分布在全世界范围的信息空间,用它来共享机器可识别的数据,会怎么样?这是关于 REST 的吗?不是的。根据 SWEO 的说法,这跟语义网有关。那些 Cool URI 有助于实现这种方式。所以,去看看 RESTful SOA URI 是不是也很“酷”可能是值得的。

语义网教育和拓展兴趣组织(Semantic Web Education and Outreach ,简称 SWEO )在 3 月底执照到期。它的最后一个产品是一个 W3C 的关于 Cool URIs for the Semantic Web的备忘录。URI 能很酷吗?这里引用 Tim Berners-Lee 从 1998 年开始发表的一篇早期文章 (当时他还没有‘Sir’这一头衔)

“什么使 URI 很酷?
一个很酷的 URI 是一个不会变的 URI。
URI 会怎么变?
URI 本身不变:是人改变了它们。”

现在 Cool URI 没有那么简单了。2005 年,经过旷日持久的对“HTTP 解除引用(dereference)功能范围”( httpRange-14 )的辩论之后,W3C 技术体系架构组(Technical Architecture Group ,简称 TAG)最后决定“如果得到的 HTTP 响应代码是 200(成功获取),这表示这个 URI 的确是标识了一个信息资源,但是如果没有得到这个响应,或者得到了一个不同的代码,就不能做这样的假设”,这与 2005 年的 TBL 总结一致。目前的 SWEO 备忘录参考了一个更详细的、由 Roy T. Fielding 发表的文章。 > a)如果一个“http”资源对一个 GET 请求的响应码是 2xx,那么被那个 URI 标识的资源是一个信息资源;

b)如果一个“http”资源对一个 GET 请求的响应码是 303(See Other),那么被那个 URI 标识的资源是任何资源;
c)如果一个“http”资源对一个 GET 请求的响应码是 4xx(错误),那么这个资源被认为是未知的。

Fielding 几乎是 REST 体系架构的同义词。然而在 RESTful SOA 中几乎很难看出 httpRange-14 的决定。例如,无论是在 Mark Bakers 的“ hypermedia constraint ”,还是在 Anne Thomas Manes 的“ REST is about Resources ”中都没有。

RDF 表示资源描述框架(Resource Description Framework),它“允许使用者以一种计算机可处理的方式来描述现实世界的 Web 文档和概念--人、组织、话题、事物。在 Web 上发布这些描述,创建语义网。” 同时出现人类可读的 Web 文档--也可以叫做“信息资源”--与计算机可处理的描述符或者语义概念引起了与 HTTP URI 代表什么有关的二义性问题。 http://www.example.com/people/alice 是代表 Alice 的设计完美的主页,还是代表一些 RDF 编码的 Alice 元数据?它能否也像一个 vCard、一个 FOAF 记录、或者一些 HR 数据集一样后跟任何公司特定模式(schema)?

这种问题已经超出了协议无关的 URI 语法的范围,这得由 HTTP 协议提供内容协商作 为解决方案。HTTP 客户端可以用自己喜欢的数据格式和语言,在请求的头部追加目标URI 来传送。内容提供者应该提供这些设置服务。SWEO 备忘录提供了 一个解决方案,这个解决方案为每一种数据格式实现了一个独立的URI,另外还有一个“通用的”URI。尽管通用URI 可以重定向到其中的一个,但是如果必 要,它还允许根据运行时HTTP 请求中的‘Accept’设置,直接从多种格式中选择中意的格式。同时,一份更详细的 Apache HTTP Server 最佳实践也已发布了。RESTful SOA 可能会认为,这主要适合那些固定文档。一个动态的 SOA 服务器能够很容易的实现这个“通用”URI 概念而无需任何重定向,它只需把请求格式的内容按需提供即可。这个观点对于内容提供来说是正确的,但是重定向体系架构对链接和引用支持更好。这也利用了资源管理和治理,语义网中是这样,RESTful SOA 中也是这样。或许,这两个应用领域根本就不能泾渭分明的划清界限。

查看英文原文 Cool URIs in a RESTful World

.

2008-04-16 06:511775
用户头像

发布了 29 篇内容, 共 50119 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

黑龙江等保测评、消除“过等保”的隐形成本

黑龙江陆陆信息测评部

.NET Core 中如何实现缓存的预热?

秃头小帅oi

YashanDB配置参数文件与密码文件管理

YashanDB

数据库 yashandb

Flutter & 鸿蒙 Next 刷新机制的高级使用【衍生详解】

淼.

YashanDB SYSTEM表空间管理

YashanDB

数据库 yashandb

DeepSeek 联合 Abaqus 深度融合,宣告 AI+CAE 仿真黄金时代来临

思茂信息

人工智能 AI 仿真 CAE DeepSeek

智慧医院软件信息化建设方案,智慧医疗医院建设方案(PPTX)

金陵老街

智慧医疗 医疗信息化 智慧医院

批量创建云主机的整个过程

天翼云开发者社区

云计算 云主机

音乐NFT软件系统的上线流程

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

libvirt和qga的区别?

天翼云开发者社区

云计算 虚拟化

荣耀远航计划丨【主题精品共创】激励解读

荣耀开发者服务平台

创作活动 荣耀HONOR 荣耀远航计划

DeepSeek接入MES系统AI赋能智能化生产

万界星空科技

制造业 mes 万界星空科技 生产管理MES系统 DeepSeek

Flutter & 鸿蒙版本数据处理常用总集

淼.

“3公里5分钟”卓翼智能无人机打通怒江物流配送“最后三公里”

科技热闻

一组数据告诉您,企业AI为什么选用友BIP!

用友智能财务

YashanDB归档日志文件管理

YashanDB

数据库 yashandb

YashanDB SYSAUX表空间管理

YashanDB

数据库 yashandb

YashanDB数据文件管理

YashanDB

数据库 yashandb

文献解读-Identification of Key Candidate Genes for Beak Length Phenotype by Whole-Genome Resequencing in Geese

INSVAST

基因测序 Sentieon 变异检测 GATK 生物信息分析服务

个人微调大模型踩坑与记录

Z C C C L

人工智能 大模型 模型微调

YashanDB控制文件管理

YashanDB

数据库 yashandb

YashanDB数据库删除

YashanDB

数据库 yashandb

YashanDB redo日志文件管理

YashanDB

数据库 yashandb

WebGL开发医学影像软件中的优化

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

智能制造:工业装备数字化端到端解决方案

积木链小链

数字化转型 智能制造 装备制造

YashanDB异构数据库链接配置

YashanDB

数据库 yashandb

<大厂实战经验> Flutter & 鸿蒙 Next 中使用 initState 和 mounted 处理异步请求的详细解析

淼.

创建云主机你不知道的那些事

天翼云开发者社区

云计算 云主机

NineData社区版抢先体验,获取无人机、双肩包、充电宝等周边福利

NineData

安装部署 SQL审核 无停机数据库迁移 NineData社区版 数据库变更

YashanDB数据库删除

YashanDB

数据库 yashandb

RESTful世界里的Cool URI_SOA_Thomas Bandholtz_InfoQ精选文章