认证服务
HOME
认证服务
正文内容
API 领域
发布时间 : 2023-10-04
作者 : jiance168
访问数量 : 99562
扫码分享至微信

了解 HTTP 应用程序接口的 RPC 与 REST

了解 REST 和 RPC 之间的区别对您规划新的 API 非常有用,对您为现有 API 开发功能也非常有帮助。最好不要在单个 API 中混用两种风格,因为这可能会让 API 的用户以及任何工具感到困惑,因为这些工具期待的是一套约定(例如 REST),而当它看到的是另一套约定(RPC)时就会崩溃。在合理的情况下使用 REST,或者在更合适的情况下使用 RPC。或者两者兼用,两全其美!

在过去几年中,每当有人想开始构建 HTTP API 时,他们几乎都会将 REST 作为首选架构风格,而不是 XML-RPC、SOAP 和 JSON-RPC 等其他方法。许多人认为 REST 最终优于其他 "基于 RPC "的方法,这有点误导,因为它们只是不同而已。

本文将在构建 HTTP API 的背景下讨论这两种方法,因为这是它们最常用的方式。RPC 和 REST 都可以通过 AMQP 等其他传输协议使用,但这完全是另一个话题。

REST 是 Roy Fielding 在其论文中描述的 "表征状态传输 "的缩写。遗憾的是,这篇论文并没有被广泛阅读,因此很多人对 REST 都有自己的理解,导致了很多混乱和分歧。REST 是一种客户端与服务器端的关系,服务器端的数据通过简单格式(通常是 JSON 和 XML)的数据表示来提供。这些数据表示为资源或资源集合,然后可对其进行修改,其操作和关系可通过一种称为超媒体的方法来发现。超媒体是 REST 的基础,本质上只是提供链接到其他资源的概念。

除了超媒体之外,还有其他一些限制,例如

REST 必须是无状态的:不会在请求之间持续会话。

响应应声明可缓存性:如果客户遵守规则,将有助于扩展应用程序接口。

REST 注重统一性:如果使用 HTTP,就应尽可能利用 HTTP 的特性,而不是发明约定俗成的东西。

这些限制(还有其他一些限制)使得 REST 架构可以帮助应用程序接口持续使用几十年,而不仅仅是几年。

在 REST 开始流行之前(在 Twitter 和 Facebook 等公司将其 API 标为 REST 之后),大多数 API 都是使用 XML-RPC 或 SOAP 构建的。XML-RPC 存在很多问题,因为确保 XML 有效载荷的数据类型非常困难。在 XML 中,很多东西都只是字符串,因此需要在上面添加元数据,以便描述哪些字段对应哪些数据类型。这也是 SOAP(简单对象访问协议)的基础之一。XML-RPC 和 SOAP 以及定制的自制解决方案在 API 领域占据了很长一段时间,它们都是基于 RPC 的 HTTP API。

RPC "的意思是 "远程过程调用",本质上与调用 JavaScript、PHP、Python 等语言中的函数一样,都是使用方法名和参数。鉴于 XML 并非每个人都喜欢,RPC API 可以使用 JSON-RPC 协议,也可以像 Slack 的 Web API 一样,定制一个基于 JSON 的 API。

在更简单的 JSON 应用程序接口中,它可能看起来更像这样:

尽管这种有效载荷要简单得多,但我们仍然需要为 getAdUnitsByStatement 和 getAdUnitsBySomethingElse 提供不同的方法。当你看到这样的示例时,REST 很快就开始变得 "更好 "了,因为它允许将通用端点与查询字符串项相结合(例如,GET /ads?statement={foo} 或 GET /ads?something={bar} )。你可以将查询字符串项组合起来,得到 GET /ads?statement={foo}&limit=500 的结果,从而很快摆脱了作为参数发送的奇怪的 SQL 式语法。

到目前为止,REST 看起来更胜一筹,但这只是因为这些示例使用 RPC 来处理一些 REST 更擅长处理的问题。本文并不试图概括哪种方法 "更好",而是帮助您做出明智的决定,以确定哪种方法更适合您。

它们有什么用?#

基于 RPC 的 API 适用于操作(即程序或命令)。

基于 REST 的应用程序接口非常适合对领域(即资源或实体)进行建模,使 CRUD(创建、读取、更新、删除)适用于所有数据。

REST 不仅仅是 CRUD,但主要通过基于 CRUD 的操作来完成。REST 将使用 HTTP 方法,如 GET、POST、PUT、DELETE、OPTIONS 和 PATCH(希望还有 PATCH),为正在进行的操作的意图提供语义。

然而,RPC 不会这样做。大多数情况下,RPC API 只使用 GET 和 POST,其中 GET 用于获取信息,POST 用于其他所有操作。常见的 RPC API 使用 POST /deleteFoo,主体为 { "id": 1 },而不是 REST 方法,即 DELETE /foos/1。

这并不是什么重要的区别,只是一个实现细节而已。在我看来,最大的区别在于如何处理操作。在 RPC 中,你只需 POST /doWhateverThingNow 即可,这一点非常明确。但在 REST 中,使用这些类似 CRUD 的操作会让你觉得 REST 除了 CRUD 之外,并不擅长处理其他操作。

其实,情况并非完全如此。两种方法都可以触发操作;但在 REST 中,触发更像是一种后效。例如,如果您想向用户 "发送一条消息",RPC 方法就是这样:

本文标签: # api认证

发布评论

评论列表 (有 48349 条评论)
访客 2024-07-06 1# 回复
收藏了,改天让朋友看看!http://7x5m0.sinopudong.com/
访客 2024-07-06 2# 回复
收藏了,以后可能会用到!http://fhe94s.ycessen.com/
游客 2024-07-07 3# 回复
楼主说的我也略懂!http://e1kr.69ey2.cn
游客 2024-07-07 4# 回复
我只看看不说话。。。http://hjglq9.zhengshanwang.cn
游客 2024-07-07 5# 回复
感谢楼主的推荐!http://2ddz.yipin112.com.cn
游客 2024-07-07 6# 回复
支持一下,下面的保持队形!http://qd5g.xmona.cn
游客 2024-07-07 7# 回复
有机会找楼主好好聊聊!http://7e3i.jkd4whd.cn
游客 2024-07-07 8# 回复
好好学习楼主的帖子!http://skfn.tjjixi.com
游客 2024-07-07 9# 回复
突然觉得楼主说的很有道理,赞一个!http://mobile.jsailitejz.com
游客 2024-07-07 10# 回复
感觉不错!http://www.qgeosu.com
游客 2024-07-08 11# 回复
有品位!http://mobile.zjchuzhou.com
游客 2024-07-08 12# 回复
回帖也有有水平的!http://www.ypbhb.com
游客 2024-07-08 13# 回复
看了这么多帖子,第一次看看到这么有内涵的!http://www.whdcpx.com
游客 2024-07-08 14# 回复
楼主是一个神奇的青年!http://wap.tjjixi.com
游客 2024-07-08 15# 回复
楼上的能详细介绍一下么?http://www.wmqfu.com
游客 2024-07-08 16# 回复
收藏了,以后可能会用到!http://www.hongshanhl.com
游客 2024-07-08 17# 回复
我对楼主的敬仰犹如滔滔江水绵延不绝!http://www.gaokaonew.com
游客 2024-07-08 18# 回复
顶一个!http://m.hongshanhl.com
游客 2024-07-09 19# 回复
观点鲜明,立场坚定,作者态度明确。http://7pdznm.1000doc.com
游客 2024-07-09 20# 回复
楼主写的很经典!http://2vo.1000doc.com
游客 2024-07-09 21# 回复
我和我的小伙伴都惊呆了!http://www.lsstpsy.com
游客 2024-07-09 22# 回复
祖国尚未统一,我却天天灌水,好内疚!http://www.zsykx.com
游客 2024-07-09 23# 回复
鉴定完毕!http://www.chifengzj.com
游客 2024-07-09 24# 回复
有钱、有房、有车,人人都想!http://wap.sdhsbxg.com
游客 2024-07-09 25# 回复
有内涵!http://wap.zjchuzhou.com
游客 2024-07-09 26# 回复
勤奋灌水,天天向上!http://2wb.1000doc.com
游客 2024-07-09 27# 回复
突然觉得楼主说的很有道理,赞一个!http://mobile.sdhsbxg.com
游客 2024-07-09 28# 回复
楼主该去看心理医生了!http://mobile.gdlasa.com
游客 2024-07-09 29# 回复
被楼主的逻辑打败了!http://7nvog.170jcw.com/n/5.html
游客 2024-07-09 30# 回复
无图无真相!http://frkl.390j.cn
游客 2024-07-09 31# 回复
这个帖子会火的,鉴定完毕!http://www.gdlasa.com
游客 2024-07-09 32# 回复
顶顶更健康!http://z4a4x0.1000doc.com
游客 2024-07-09 33# 回复
看帖、回帖、拿分、走人http://klkr5.1000doc.com
游客 2024-07-09 34# 回复
我对楼主的敬仰犹如滔滔江水绵延不绝!http://ls7ete.1000doc.com
游客 2024-07-09 35# 回复
赞一个!http://qaic.ycysdm.com
游客 2024-07-09 36# 回复
帖子很有深度!http://iw10p.ycysdm.com
游客 2024-07-09 37# 回复
楼主是一个神奇的青年!http://q7k.1000doc.com
游客 2024-07-09 38# 回复
写得实在太好了,我唯一能做的就是默默顶贴!http://4b4.1000doc.com
游客 2024-07-10 39# 回复
我回帖楼主给加积分吗?http://l0krh.1000doc.com
游客 2024-07-10 40# 回复
哥回复的不是帖子,是寂寞!http://u6xmp.1000doc.com
游客 2024-07-10 41# 回复
语言表达流畅,没有冗余,读起来很舒服。http://kn58g0.baidu680.com
游客 2024-07-10 42# 回复
不错哦,楼主这是要火的节奏啊!http://e59.baidu680.com
游客 2024-07-10 43# 回复
论坛的人气越来越旺了!http://sj889e.ycysdm.com
游客 2024-07-11 44# 回复
在这个版块混了这么久了,第一次看见这么给你的帖子!http://uar7d8.baidu680.com
游客 2024-07-11 45# 回复
好无聊啊!http://m1j1s.baidu680.com
游客 2024-07-11 46# 回复
最近回了很多帖子,都没人理我!http://b571v.baidu680.com
游客 2024-07-11 47# 回复
不是惊喜,是惊吓!http://65dh.baidu680.com
游客 2024-07-11 48# 回复
有机会找楼主好好聊聊!http://25sl.baidu680.com
游客 2024-07-11 49# 回复
今天上网不回帖,回帖就回精华帖!http://gvzpez.ycysdm.com
游客 2024-07-11 50# 回复
楼上的很有激情啊!http://maef.ycysdm.com
游客 2024-07-11 51# 回复
有品位!http://p3ea0z.ycysdm.com
游客 2024-07-11 52# 回复
一口气看完了,我要下去回味回味了!http://n3x.szbxlpioneer.com
游客 2024-07-11 53# 回复
大神就是大神,这么经典!http://x0sg.szbxlpioneer.com
游客 2024-07-11 54# 回复
以后就跟楼主混了!http://sy2.szbxlpioneer.com
游客 2024-07-11 55# 回复
楼主的等级很高啊!http://2ph2.szbxlpioneer.com
游客 2024-07-11 56# 回复
强,我和我的小伙伴们都惊呆了!http://zfp73.szbxlpioneer.com
游客 2024-07-11 57# 回复
顶!顶!顶!http://mr2mg.cnjtr.cn
游客 2024-07-11 58# 回复
楼主主机很热情啊!http://www.gxmlm.com
游客 2024-07-11 59# 回复
好好学习楼主的帖子!http://llx6h.longkangys.cn
游客 2024-07-11 60# 回复
好帖子!http://cco.szbxd.com.cn
游客 2024-07-11 61# 回复
楼上的心情不错啊!http://mh9.longkangys.cn
游客 2024-07-11 62# 回复
文章论点明确,论据充分,说服力强。http://r9n.szbxd.com.cn
游客 2024-07-11 63# 回复
对牛弹琴的人越来越多了!http://444m.szbxd.com.cn
游客 2024-07-11 64# 回复
很有品味!http://trw.szbxd.com.cn
游客 2024-07-11 65# 回复
勤奋灌水,天天向上!http://xov.gljcgg.com
游客 2024-07-11 66# 回复
有钱、有房、有车,人人都想!http://d1b.cnjtr.cn
游客 2024-07-11 67# 回复
楼主的文笔不错!http://z7gfr.gljcgg.com
游客 2024-07-11 68# 回复
收藏了,很不错的内容!http://bcw.yutaigc.com
游客 2024-07-11 69# 回复
论坛人气好旺!http://www.gxmlm.com
游客 2024-07-11 70# 回复
这么版块的帖子越来越有深度了!http://42otf6.zb799.com
游客 2024-07-11 71# 回复
支持一下,下面的保持队形!http://eyglj.jcpjammu.com
游客 2024-07-11 72# 回复
怪事年年有,今年特别多!http://1srx7u.gljcgg.com
游客 2024-07-11 73# 回复
楼主的等级很高啊!http://o1s7.gljcgg.com
游客 2024-07-11 74# 回复
看帖、回帖、拿分、走人http://yfz.woainmg.com
游客 2024-07-11 75# 回复
看了这么多帖子,第一次看到这么经典的!http://69j0.longkangys.cn
游客 2024-07-11 76# 回复
很有品味!http://pt1f.gljcgg.com
游客 2024-07-11 77# 回复
这位作者的文笔极其出色,用词精准、贴切,能够形象地传达出他的思想和情感。http://ls2.gljcgg.com
游客 2024-07-11 78# 回复
怪事年年有,今年特别多!http://rjgl.yutaigc.com
游客 2024-07-11 79# 回复
学习雷锋,好好回帖!http://wiotx.lunwenwenku.com
游客 2024-07-11 80# 回复
哥回复的不是帖子,是寂寞!http://9vefft.lunwenwenku.com
游客 2024-07-11 81# 回复
好好学习楼主的帖子!http://o7clc.morningcolumn.com/3/4.html
游客 2024-07-11 82# 回复
这个帖子会火的,鉴定完毕!http://45hdag.yutaigc.com
游客 2024-07-11 83# 回复
文章论点明确,论据充分,说服力强。http://lyey.fhlaser.com
游客 2024-07-11 84# 回复
视死如归的架势啊!http://982z.yutaigc.com
游客 2024-07-11 85# 回复
顶顶更健康!http://racwzw.nonauxsubventions.com
游客 2024-07-11 86# 回复
顶!顶!顶!http://www.2qukuai.com
游客 2024-07-11 87# 回复
有机会找楼主好好聊聊!http://2m8v.octhy.com
游客 2024-07-11 88# 回复
论坛人气好旺!http://lyw.longkangys.cn
游客 2024-07-11 89# 回复
世界末日我都挺过去了,看到楼主我才知道为什么上帝留我到现在!http://a5lc.hnbioeng.com
游客 2024-07-11 90# 回复
今天过得很不爽!http://www.gxmlm.com
游客 2024-07-11 91# 回复
东方不败还是灭绝师太啊?http://jzqk.lnjdtm.com
游客 2024-07-11 92# 回复
楼上的别说的那么悲观好吧!http://www.ddman.net
游客 2024-07-11 93# 回复
今天上网不回帖,回帖就回精华帖!http://ggluk7.cdjiagu.cn
游客 2024-07-11 94# 回复
这么好的帖子,应该加精华!http://dj2.jcpjammu.com
游客 2024-07-11 95# 回复
十分赞同楼主!http://9np3m.woainmg.com
游客 2024-07-11 96# 回复
一口气看完了,我要下去回味回味了!http://x84h.jcpjammu.com
游客 2024-07-11 97# 回复
坚持回帖!http://oq99i.woainmg.com
游客 2024-07-11 98# 回复
文章写太挺好了,真的值得推荐http://5sm.woainmg.com
游客 2024-07-11 99# 回复
大神好强大!http://4wu.colorfireworks.com
游客 2024-07-11 100# 回复
楼主好聪明啊!http://6u61c.colorfireworks.com
张经理: 187-2179-1314(微信同号)
foot#jiance168.cn
上海闵行区莘北路505号4楼
©2024  「HQG中料」  版权所有.All Rights Reserved.  
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

187-2179-1314
专属服务热线

微信

二维码扫一扫微信交流
顶部