java 远程调用api_【设计API系列】RPC | 以下是你要掌握的远程过程调用 (RPC)

远程过程调用(RPC)提供了一种客户端在服务器上执行代码的方式,与REST不同,它关注的是动作而非资源。RPC API通常在端点中包含操作名称,并根据HTTP动词区分只读和其它请求。例如,Slack API采用RPC风格,提供如归档、加入等操作。除此之外,高性能的RPC协议如Apache Thrift和gRPC也支持序列化和结构化数据交互。本文作为API设计系列的一部分,探讨了RPC在API设计中的适用场景。
摘要由CSDN通过智能技术生成

1ead73329fafc9ce6ef8ecc931bf5a8f.png

远程过程调用 (RPC) 是最简单的API范例之一,用一句话概括就是其client在server上执行代码块,换句话说,就是要像调用本地的函数一样去调远程函数。之前我们讲到REST是关于资源(resources) 的,而RPC是关于动作 (actions) 的。客户端通过类型传递方法名称 (method) 和参数 (arguments) 到服务器,并接收回JSON或XML。

RPC APIs 通常遵循两个简单的规则:

  • 端点包含要执行的操作名称。
  • API调用使用恰当的HTTP动词: GET用于只读请求,POST用于其他请求。

RPC风格非常适合于那些需要暴露各种 action 的api,这些操作可能比用CRUD封装的操作有更多的细微差别和复杂性。RPC样式的API还适用于复杂的资源模型或针对多种类型资源的操作。

下面我给大家举个例子,Slack公司的API就是采用了这种RPC风格的 web API。下面这个例子展示了一个POST 请求去调用Slack's 回话存档的 RPC API。 参考链接

Method URL: https://slack.com/api/conversations.archive
HOST slack.com
Content-Type: application/x-www-form-urlencoded

Slack的对话 API 允许一些操作 [具体链接] ,例如归档 (archive)、加入(join)、离开 (leave) 和 重命名 (rename) 等。尽管在在这些例子中看起来有一个明确的“资源”,但并不是所有这些操作都能很好地适应REST模式。

此外,还有些其他操作,比如“发布消息”:chat.postMessage,它与web 客户端的消息资源、附件资源和可见性设置有着复杂的关系。

dc2d99444d8eb5816db2af0cda4ed9fe.png

RPC风格的API同样支持HTTP,但是它还有其他一些用于支持RPC风格API的高性能协议,包括Apache Thrift和gRPC。Thrift和gRPC请求都是序列化的 (gRPC支持JSON)。结构化的数据和清晰的接口定义支持了这种序列化。Thrift和gRPC也有编辑数据结构的内置机制,在这里就不多展开阐述了,有感兴趣的小伙伴可以去了解一下!


往期API设计文章

Justin:【API设计系列】GraphQL | 一种为你的API 而生的查询语言

Justin:【设计API系列】你真的清晰的了解过REST APIs么?奶茶的故事让你再也不会忘记它

Justin:【设计API系列】一文了解常见的事件驱动APIs范例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值