把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

unREST 是新的 REST 吗?

  • 2011-07-12
  • 本文字数:1188 字

    阅读完需:约 4 分钟

可以这么说,仅仅是提到 REST 这个词就能引起人们的两极分化。有段时间 REST 努力抗击 WS-* 浪潮,随后出现了一个巅峰,这就像一个障碍,REST 开始走下坡路了,人们认为REST有好处但也许没有其他人想象的那么多。抵制对“ REST 拥护者(RESTafarians)”相信的东西照单全收的主要倡导者之一就是 Jean-Jacques Dubray ,他最近发表了一篇文章,讨论他所谓的 unREST 。JJ 是这样开篇的:

自 2007 起,一小撮人告诉整个业界“Web”可以教会大家关于分布式计算的所有东西,我们之前所做的都是错的。四年过去了,我们只能说这一说法仍然未被证实。

JJ 论证的核心是 REST 在设计时考虑了浏览器,任何试图脱离该上下文使用 REST 的做法无疑都是 unRESTful 的:

REST 在设计时考虑了终端用户,操作用户代理:浏览器 […]。任何将 REST 原则应用于代理至服务器(agent-to-server)场景的软件的做法都是错的。[…] 是时候该继续前进了,这种非常规思路的复杂性没有带来一点好处,反而降低了生产力,它强迫所有人手工编码那些在上一种分布式计算范式中唾手可得的东西。

用 JJ 的话来说,REST“并不适用于目前的问题”,“做到 RESTless 很酷”。这意味着什么呢?JJ 列出了一些规则,包括:

  • 定义领域专用统一接口:“不要害羞,忘记那 4 个 HTTP 动词吧,甚至可以定义自己的动词:Query/Do/Notify/Synchronize 就很不错。它意味着你 Web API 中的全部方法都是查询、动作、通知或同步请求类型的。”
  • 规定消息:对于需要相互通信的两个端点,它们必须要能理解所交换的消息。正如 JJ 所说的“能明确标明版本的消息定义对健康的 API 定义来说是必不可少的。消息可扩展性是让分布式计算运作的重要属性。”
  • 规定端点之间的契约,并保证它们被打上版本:端点之间的接口和它们交换的消息是契约的组成部分。JJ 说把机器可读的契约变为只有人类可读的这种做法是行不通的,他相信其结果只能是浪费大量时间。“统一接口并不足以构成契约,它只是契约定义的基础部分。”JJ 坚信要构建“一个健康的 Web API 消费者生态系统”的唯一途径就是使用机器可读的契约,为它们标上版本以保证契约的进化和重用。

归纳起来:JJ 相信有了这 3 条规则我们就拥有了创建成功 API 的基础。他指出这篇文章并非基于自己的突发奇想,在过去的至少十年时间里他都在和基于 Web 的协议打交道,包括 ebXML。你认同他的观点或是他最后的评论吗?

你可以自由选择 unREST,暗地里嘲笑那些要求你对 HTTP 标头、“链接”、7 个首字母缩写(译注:估计是 REST API)惊叹不已的人,他们或许还会带着 REST 传道士的口吻说你其实并不理解 REST。REST 只是一个(恶)梦,unREST 才是你想要做的。

随着人们越来越多地讨论 REST,尤其是在这样的领域里,如果JJ 是对的,那么要改变这些做法就为时已晚了,也有可能它们本身就已经是unRESTful 的了?也许unREST 正在回到那“糟糕的旧时代”?

查看英文原文: unREST as the new REST?

2011-07-12 10:333087
用户头像

发布了 135 篇内容, 共 66.8 次阅读, 收获喜欢 43 次。

关注

评论

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

技术文档 | 使用 Pulsar Functions 构建实时 AI Pipeline

AscentStream

Machine Learning pulsar

DApp极速开发指南:7天搞定Solidity合约+React前端全栈实战

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

合规交易所架构设计:冷热钱包隔离+zk-KYC方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

混合开发范式重构:FinClip驱动Native+小程序跨端生态进化

xuyinyin

FocalPO:通过聚焦正确偏好排序增强偏好优化技术

qife122

机器学习 偏好优化

告别碎片化输入:TextIn xParse如何为RAG打造「零损耗」知识管道

合合技术团队

人工智能 算法 #大数据

直播预告 | 您的数据能喂给AI了吗?让GenAI读懂企业语言——产品分享会:矩阵起源MatrixOne Intelligence产品独家解析

MatrixOrigin

Golang笔记之Redis

Hunter熊

golang redis 哈希 有序集合

海外舆情监测系统能帮企业做什么?

沃观Wovision

海外舆情监控 沃观Wovision 舆情监测系统

《AI-Assisted Programming》读后感

codists

Python

[鸿蒙征文]钢琴和弦小工具

大展红图

鸿蒙 音乐 HarmonyOS HarmonyOS NEXT 钢琴

这个仓库堪称造轮子的鼻祖,建议看看!

Immerse

今日立秋 | 夏尽秋来,万物从容

中烟创新

从v3.1到v4.3,OceanBase稳定支撑快手PB级核心业务场景

老纪的技术唠嗑局

运维 数据库设计 OceanBase 社区版 mysql'

迈出万物互联的一小步:仓颉版TCPGroupChat群聊实现

华为云开发者联盟

仓颉 华为开发者空间

强化大型语言模型复杂指令推理能力的新方法

qife122

大型语言模型 指令跟随

小样本学习在语言理解任务中的突破

qife122

自然语言处理 小样本学习

大模型训练故障恢复效率提升方案

qife122

机器学习 容错机制

知识蒸馏提升多任务学习收敛效果

qife122

机器学习 多任务学习

基于远程开发环境部署Django与开发者空间GaussDB的实践应用

华为云开发者联盟

华为开发者空间

使用DPO在SageMaker中定制Nova模型

qife122

人工智能 DPO优化

语音技术跨学科研究新趋势

qife122

语音识别 自然语言理解

DataKit 采集器敏感信息加密最佳实践

观测云

可观测性

在Python代码中安全隔离依赖项的沙箱技术

qife122

Python安全 依赖隔离

Sunrun漏洞披露计划(VDP)正式上线 - 携手共建更安全的未来

qife122

漏洞赏金 漏洞披露

基于开发者空间OpenGauss数据库的分区表项目实践

华为云开发者联盟

opengauss 华为开发者空间

基于华为开发者空间,仓颉宏实现语言集成查询LINQ

华为云开发者联盟

opengauss 华为开发者空间

【IoTDB 线上小课 18】Apache 软件基金会是什么?开源世界的“超级孵化器”!

Apache IoTDB

基于偏置图采样的关联产品推荐优化

qife122

图神经网络 数据采样

评估LLM标注可靠性:人口偏见与模型解释

qife122

自然语言处理 可解释AI

unREST是新的REST吗?_SOA_Mark Little_InfoQ精选文章