API概念
API,即应用程序编程接口。这些接口充当软件中介,为应用程序之间的交互和对话建立特定的定义和规则。允许两个独立的分布式应用程序或服务进行通信,而无需知道另一个应用程序或服务的内部工作原理。API 负责将响应从用户传递到系统,然后从系统返回给用户。
API 指定了一个应用程序(网页或移动应用)可以向另一个应用程序发出的请求类型,并进一步确定:如何发出这些请求;使用哪些数据格式;以及用户必须遵循的实践。
RPC概念
RPC 使用客户端-服务器模型。请求服务器(换句话说就是客户端)请求一条消息,该消息由 RPC 转换并发送到另一台服务器。服务器收到请求后将响应发送回客户端。当服务器处理这个调用时,客户端被阻塞,服务器内部的消息传递被隐藏。
此外,RPC 允许客户端以特定格式请求函数,并以完全相同的格式接收响应。在 URL 中可以找到使用 RPC API 提交调用的方法。RPC 支持本地和分布式环境中的远程过程调用。
与 REST API 一样,RPC 还建立了交互规则以及用户如何提交“调用”(请求)以调用方法与服务通信和交互的机制。
Restful概念
使用 REST API 时,来自后端数据的响应通过 JSON 或 XML 消息格式传递给客户端(或用户)。这种架构模型倾向于遵循 HTTP 协议。然而,在维护 RCP 模型的同时,RCP 设计也时常从 HTTP 中汲取一些想法。事实上,不管使用的是哪种模型(RPC 或 REST),大多数现代 API 实现都将 API 映射到相同的 HTTP 协议时。
风格比较
RPC特点
- 浏览器兼容性低,因此多用于服务端的内部/私有系统;内部需要大量通信的分布式系统
- 更侧重于动作,允许在外部远程调用函数
- 和传统Restful相比,RPC使用了不一样的通信协议和数据负载结构,使得传输效率和数据压缩效率更高
- 实现复杂,流程繁琐,因此许多RPC框架自带代码生成工具
- 客户端开发人员必须事先知道函数名称和参数,可以使用工具生成API文档方便查阅
- 客户端使用 HTTP 的 POST 请求 按名称调用特定函数
- 有状态(rpc框架在内部配置http实现)或无状态
Restful
- 所有通用浏览器都支持
- 面向的主体是资源,在服务端可以执行特定的数据操作
- 实现起来,更规范,更标准,更通用(标准化服务器操作)
- 调试和测试都很方便
- 开发人员只需要知道服务器资源 URL,而不必关心单个函数的名称,有更成熟的第三方工具生成API文档供使用
- 资源可以通过以下 HTTP 命令访问:
GET、DELETE、POST和PUT - 无状态