写点什么

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

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

关注

评论

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

零信任的用户行为分析: 通过综合策略解锁安全洞察力(三)

天翼云开发者社区

安全 零信任 行为感知

中国自动驾驶研发解决方案,第一!

百度Geek说

智能驾驶

比较入站和出站防火墙规则

运维有小邓

日志分析 日志审计 防火墙工具 防火墙日志管理

PWA与小程序技术架构差异及出海布局策略

xuyinyin

rust程序静态编译的两种方法总结

电子尖叫食人鱼

rust 后端

阿里云 AI 搜索开放平台新增:服务开发能力

阿里云大数据AI技术

大数据 数据分析 数据处理 人工智能、 AI 搜索引擎

龙蜥社区走进中国农业大学,共探“AI+生命科学” 操作系统优化实践

OpenAnolis小助手

操作系统 龙蜥社区 OpenAnolis 龙蜥高校行

摩尔线程 MTT S4000训推一体计算卡通过中国信通院AI芯片和大模型适配验证

新消费日报

Databend 推出 BendDeploy:一站式可视化管控平台,重塑数据库私有化运维体验

编程猫

PDF 翻译神器 PDFMathTranslate 安装和使用教程

硅基新手村

PDF rag FastGPT

中望CAD适配鸿蒙电脑,打造“多端+全流程”设计行业全场景方案

最新动态

零信任的用户行为分析: 通过综合策略解锁安全洞察力(二)

天翼云开发者社区

安全 零信任 环境感知

Nacos源码—Nacos集群高可用分析(三)

不在线第一只蜗牛

Java 源码

从“制造”到“智造”,落地新质生产力的关键

科技热闻

为什么自动化测试总在凌晨崩溃?90%工程师不知道的AI脚本陷阱

测试人

人工智能

企业级开发平台:从分布式架构到 AI 代理的协同创新

代码制造者

AI DevOps 分布式系统架构

资深导师手把手教学,龙蜥社区邀您开启 2025 开源之夏

OpenAnolis小助手

操作系统 龙蜥社区 开源之夏 龙蜥赛事

MySQL同步ES的6种方案!

量贩潮汐·WholesaleTide

MySQL 数据库

开源之夏2025 | SeaTunnel黄金席位争夺战,斩获高额奖金+顶尖履历!

白鲸开源

大数据 开源 数据集成 Apache SeaTunnel 开源之夏

通义灵码添加上下文能力怎么用?一篇看懂

阿里云云效

通义灵码

技术实践 | 几乎零代码!像搭乐高一样做AI应用,LazyLLM确实有点东西!

商汤万象开发者

AI 智能体 大模型 LLM AI 智能体

议题征集 龙蜥邀您共探“AI+运维”发展新趋势 | 龙蜥 MeetUp

OpenAnolis小助手

操作系统 系统运维 龙蜥社区 龙蜥meetup

立即报名!5月9日19点,航遥中心教授级高工解析大模型如何赋能科研

ModelWhale

大模型 科研 DeepSeek

FinClip赋能中国应用破浪全球:跨端降本增效引领出海新纪元

xuyinyin

小艺对话一键生成导图,万兴脑图联合鸿蒙电脑打造全新思维管理系统

最新动态

DNS缓存投毒是怎么回事?怎么预防?

国科云

权威数据 | 商汤万象,再次领跑!

商汤万象开发者

AI 科技

有哪些值得推荐的Markdown编辑器?5个Markdown软件盘点!

职场工具箱

markdown 编辑器 PPT 办公软件 AI生成PPT

Pectra 升级是什么?一文看懂以太坊最新技术进展

TechubNews

如何快速开发视频下载器

石臻臻的杂货铺

视频处理 视频下载 AI翻译

一文读懂HyperWorks有限元分析流程

智造软件

模型 CAE 网格 单元格 Hypermesh

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