写点什么

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

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

关注

评论

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

回顾|开源之夏校园行兰州大学站

MatrixOrigin

分布式数据库 HTAP MatrixOrigin MatrixOne 超融合数据库

软件测试 | 自动化测试的基本流程

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

测试

ChatGPT赋能产品管理

俞凡

人工智能 产品管理 ChatGPT

红杉中国独立,艰难时期“美元基金”投资路径浮出水面

B Impact

什么是双机热备技术?华为和思科如何实现双机热备?

wljslmz

6 月 优质更文活动

搞定大模型,AI 大底座系列云智公开课 6 月 20 日开始上线

Baidu AICLOUD

大模型 AI 大底座

什么是智慧公共厕所?光明源智慧厕所

光明源智慧厕所

GOTC全球开源技术峰会|Sermant首次亮相,推进云原生微服务治理技术的演进

华为云开源

#云原生

文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题

福大大架构师每日一题

福大大 ChatGPT

.net低代码开发平台 快速实现组织架构数字化

力软低代码开发平台

首个锚定BTC Mining算力的HAG证券通证,或成传统投资者的另一选择

股市老人

2023-06-07:Redis 持久化方式有哪些?以及有什么区别?

福大大架构师每日一题

redis 福大大

【Python金融-002】快速计算收益,批量做T必备!

程序员晚枫

Python 数据分析 金融 股票 做T

Java 8升级Java 17过程记录

程序员架构进阶

jdk8 升级 java17 6月月更 6 月 优质更文活动

探访官招募 | InfoQ 写作社区 邀您探访 2023 亚马逊云科技中国峰会

InfoQ写作社区官方

热门活动

MobPush 查看推送数据

MobTech袤博科技

1v1视频交友APP的详细搭建部署步骤和视频交友APP核心功能介绍

山东布谷科技胡月

一对一直播源码 一对一直播系统 1v1语音系统搭建 视频社交APP开发 1v1交友app开发

开放源代码平台Flynn的架构与实现原理

穿过生命散发芬芳

Flynn 6 月 优质更文活动

软件测试 | 走出自动化测试认知的误区

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

测试

十大理由,说清企业为何需要 CI/CD

极狐GitLab

DevOps 自动化 CI/CD 降本增效 效能提升

C语言编程—预处理器

芯动大师

C语言 预处理器 6 月 优质更文活动

能力,责任心和危机感(67/100)

hackstoic

管理

赋能行业,因云而动 | 山西软件行业CXO思享会在太原成功举办,助力山西软件行业高质量发展

科技热闻

开源“上天入地”的本领都在这!2023开放原子全球开源峰会「开源展览」一文拿捏!

开放原子开源基金会

开源 开放原子全球开源峰会 开源展览

RocketMQ 学习社区重磅上线!AI 互动,一秒了解 RocketMQ 功能源码

阿里巴巴云原生

阿里云 AI RocketMQ 云原生

如何设计一组会出现死锁(Deadlock)的 ABAP 程序

汪子熙

Java 死锁 SAP abap 6 月 优质更文活动

官宣!XTransfer与全球社交网络服务巨头Meta达成战略合作

XTransfer技术

GitOps 最佳实践(上)| 基于 Amazon EKS 构建 CI/CD 流水线

亚马逊云科技 (Amazon Web Services)

微服务

Unlimiformer:用搜索的思路来处理注意力机制长度限制

Zilliz

Transformer

程序员如何成长

光毅

成长 程序员‘

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