【发布时间】:2018-10-27 22:15:56
【问题描述】:
谁能解释使用 json-rpc 优于 json-api 的优势,反之亦然?第一种和第二种格式是基于 JSON 的,但是我应该在哪里使用一种,另一种呢?
【问题讨论】:
谁能解释使用 json-rpc 优于 json-api 的优势,反之亦然?第一种和第二种格式是基于 JSON 的,但是我应该在哪里使用一种,另一种呢?
【问题讨论】:
注意:我可能会遇到一些偏见。我是Json-RPC.net 服务器库的作者。
Json-RPC 是一个远程过程调用规范。您可以使用多个库来使用该协议进行通信。它不是基于 REST 的,并且与传输无关。您可以像很常见的那样通过 HTTP 运行它,也可以通过套接字或您认为合适的任何其他传输方式使用它。所以在这方面它是相当灵活的。您还可以通过在客户端或服务器上托管 RPC 服务器来执行服务器到客户端以及客户端到服务器请求。
Json-API 是用于构建 REST API 的规范。您可以使用多个库来开始使用它。与 Json-Rpc 相比,它要求您将其托管在 HTTP 服务器上。您不能使用它调用客户端上的函数。您不能通过非 http 传输协议运行它。基于 REST,它擅长提供有关资源的信息。如果您想要一个基于某些资源集合的创建、读取、更新、删除思想的 API,那么这可能是一个不错的选择。
如果你的 API 是基于资源的,并且你希望你的 API 可以被人类浏览而不需要为其设置文档,那么 Json-API 会更好。尽管那个人可能需要在软件工程领域才能理解它。
如果你的 API 是基于函数的,或者你想要它提供的灵活性,Json-RPC 会更好。 Json-RPC 仍可用于通过为资源创建创建、读取、更新和删除函数来操作资源,但由于它不是基于 REST 的,因此您无法获得可浏览性。通过基于您公开的功能生成文档,人类仍然可以探索(而不是浏览)它。
使用 Json-Rpc 的一个流行例子是比特币。
有很多流行的基于 REST 的 API,而 Json-API 是一个规范,其中包含大量工具来帮助您正确地进行 REST。
--
注意:考虑到开发人员的时间、性能或有效使用网络资源,这两种方法(Json-RPC 或 Json-API)都不好。
如果您关心性能、效率或开发人员时间,请查看 Google 的 gRPC,这在这些方面非常出色,并且仍然可以比使用 REST API 减少开发人员时间,因为可以生成客户端和服务器代码来自协议定义文件。
【讨论】: