QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:511460
用户头像

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

关注

评论

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

javascript数组基础

timerring

JavaScript

​加速大规模团队创新,开发安全、可靠、合规的汽车软件

龙智—DevSecOps解决方案

ACT汽车电子与软件技术周 汽车电子与软件技术周

SpringCloud Gateway 在微服务架构下的最佳实践

阿里巴巴云原生

阿里云 云原生 Spring Cloud Gateway

git rebase介绍与可视化工具(sourceTree)提效

时常看看太阳

git git rebase sourcetree

CCIA数安委等组织发起“个人信息保护影响评估专题工作”,合合信息首批入选试点

合合技术团队

人工智能 信息安全 个人信息保护

时序数据库 TDengine 被帆软纳入数据源,可视化方案多样化

爱倒腾的程序员

数据库

金蝶管易云 X Hologres:新一代全渠道电商ERP最佳实践

阿里云大数据AI技术

ERP

小程序开发技术解析:事件系统设计

Onegun

小程序 事件 小程序开发

软件测试 | 影响MySQL性能的重要参数

测吧(北京)科技有限公司

测试

智慧消防大数据监控系统 城市火警智能监测

2D3D前端可视化开发

智慧城市 智慧消防 消防物联网云平台 消防云控平台

内网穿透之 ngrok

陈皮

ShareSDK 国外平台登陆返回参数

MobTech袤博科技

前端 App

静态分析全解析:助力高质量软件开发,降低成本风险

龙智—DevSecOps解决方案

静态分析 静态代码分析 静态代码分析工具

柴洪峰院士:大模型赋能金融科技思考与展望

NLP资深玩家

人工智能 金融科技 大模型 WAIC

加速数字化转型:龙智专家分享DevSecOps和ITSM工具性能优化策略——2023 DevOps国际峰会现场访谈

龙智—DevSecOps解决方案

DevSecOps devops国际峰会

从国内最早的开放银行浅聊技术创新

FinFish

技术创新 开放银行 小程序化 小程序技术

Requests+Etree+BeautifulSoup+Pandas+Path+Pyinstaller应用 | 获取页面指定区域数据存入html、excel文档

Python pandas pyinstaller requests BeautifulSoup

软件测试 | 什么时候使用表锁

测吧(北京)科技有限公司

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册

华为云PaaS服务小智

软件开发 低代码 数据可视化 华为云

免费MES系统:助力企业数字化转型的利器

万界星空科技

开源 数字化转型

人工智能如何应对 DevOps 监控和可观测性挑战

SEAL安全

人工智能 DevOps 运维

打通数据治理全链路,火山引擎DataLeap数据治理平台公有云版本正式发布

字节跳动数据平台

大数据 数据中台 数据研发 企业号 8 月 PK 榜

软件测试 | 升级MySQL

测吧(北京)科技有限公司

测试

代码随想录Day34 - 贪心算法(三)

jjn0703

全链路灰度的挑战、实现思路与解决方案

阿里巴巴云原生

阿里云 云原生 全链路灰度

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

大瞿科技

小白也能基于OpenAI搭建自己的英语学习工具

派大星

openai

低代码平台什么意思

优秀

低代码平台

软件测试 | table_cache的设置

测吧(北京)科技有限公司

测试

软件测试 | 源码包安装的性能考虑

测吧(北京)科技有限公司

测试

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