BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

我们是否需要REST的替代品?

| 作者 Mark Little 关注 14 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2014年1月3日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

SoapUI的缔造者Ole Lensmar最近被问起,是否认为REST即将步入暮年,以及是否需要寻找它的替代者。对此他表示:

在近些年中,REST得以成为构建公用API的主要方法,并令任何其他API技术或方法都黯然失色。虽然在企业中依旧(非常)流行一些其他方法(主要是SOAP),但是API运动的早期参与者们已经抱有鲜明的立场:他们选择了REST方法,并以JSON作为首选消息格式。

接下来,Ole探讨了为何他认为REST比其他方法(例如SOAP和XML-RPC)更加成功。尽管如此,Ole也承认在一些领域中REST确实表现不佳,需要使用其他替代者来应对这些应用场景下的需求。这些领域包括:

  • 异步API:“面对用异步推送数据取代传统请求/响应模式的需求,RESTful设计并不适用。此外,底层技术(例如WebSockets、MQTT、AMQP、Stomp、pubsubhubbub/WebHooks等)常常与HTTP有很大不同,因此往往也就不能与REST准则良好匹配。”
  • 编配API:“传统REST API提供的资源粒度并不总是一项优势;将资源拖入移动仪表板或是复杂的单页Web应用,将需要许多API请求——这将同时增加客户端逻辑、带宽和服务器处理方面的开销。”
  • SDK vs API:“大部分使用者最终都是在一些高级语言中调用API;诸如JavaScript、Python、Ruby、Java等等,因此许多API提供者都为这些语言提供了预建的客户端库(Google、Facebook等)。这些语言本身往往更加面向RPC,由SDK暴露出的代码层面的API也是如此——因此,要让后端API采用相似的方式工作,或许需要使用更加优化的二进制协议(见后文)或是与RPC更加类似的HTTP资源的使用(例如JSON-RPC)”
  • 二进制协议:“[……]面对IoT设备或SDK中的要求——例如传输优化后的消息——若干二进制协议正在获得更多的关注并得到运用”,例如Apache Thrift、Google Protocol Buffers和Apache Avro.“[值得一提的是]上面提到的若干异步API技术使用一种二进制格式——与带宽和来自其存留的设备或服务的处理约束有关。”

Ole以Evernote(在大陆地区的产品名为印象笔记)为例,它使用Thrift作为其底层协议,以应对实时请求(这大概也是Ole所指的超出REST能力的东西)。他提到了另一篇由Daniel Jacobson撰写的关于Evernote的RESTless设计的独立文章:

[……]当我们面对大量未知的开发者时,REST API或许是个好的选择——然而当我们的API针对非常明确的用户、市场、行业或技术时,对于更加具体的解决方案的需求并不是毫无来由的——或许这甚至会使我们在性能、易用性或安全性方面领先我们的竞争者。

在总结中Ole表示,万应灵药并不存在,特别是与API设计有关的领域。“幸运的是,对我们这些热忱的技术人员来说,构建和学习新东西,并尽可能让所有利益干系人都运用它,将使我们的世界(至少是我的)充满活力。所以我并不反对这种多样性,相反我很乐于见到这一切。”

然而,虽然得到了一些人的赞同,但是也还有许多人对Ole的观点表示反对。例如John Sheehan说:

我并不认为Evernote称得上是“放弃了REST”,因为他们自始至终都没有使用它,并且有充分的理由这样做。同时,Webhooks也可以是非常“REST”的(至少从对这一概念的通俗理解来看是这样)。Ole在异步这部分列出的警告,并不适用于大部分常见的实现。

而Darrel Miller则试着区分REST和“pop REST”:

从Daniel Jacobson对编配层的描述,我认为它与我在过去数年间一直采用的RESTful(以及超媒体驱动)API构建方式贴合地非常紧密。只不过因为人们开始识破“pop REST”的大肆宣传,并不意味着Fielding所定义的REST的属性已经发生了变化。

实际上许多评论家相信,Ole没有真正将RESTful原则,与打着RESTful旗号但实际却并非如此的实践进行区分。各位读者对此怎么看?在Ole所列举出的全部领域中REST是否真的适用?如果不是的话,你推荐用什么来替代它?

查看英文原文:Are REST Alternatives Needed?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT