RESTful世界里的Cool URI

假想一下,如果要以最小的集成代价实现一个分布在全世界范围的信息空间,用它来共享机器可识别的数据,会怎么样?这是关于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

.

你可能感兴趣的:(RESTful世界里的Cool URI)