json-rpc 和 json-api 有什么区别?

What is difference between json-rpc and json-api?

谁能解释一下使用 json-rpc 相对于 json-api 的优势,反之亦然?第一和第二格式是基于 JSON 的,但是我应该在哪里使用一个,另一个在哪里?

注:我可能觉得有点偏颇。我是 Json-RPC.net 服务器库的作者。

Json-RPC是远程过程调用规范。您可以使用多个库来使用该协议进行通信。它不是基于 REST 的,并且与传输无关。您可以通过 HTTP 运行 它,这很常见,您也可以通过套接字或您认为合适的任何其他传输方式使用它。所以它在这方面非常灵活。您还可以通过在客户端或服务器上托管 RPC 服务器来执行服务器到客户端以及客户端到服务器的请求。

Json-API 是构建 REST API 的规范。您可以使用多个库来开始使用它。与 Json-Rpc 相比,它要求您将其托管在 HTTP 服务器上。您不能用它调用客户端上的函数。您不能通过非 http 传输协议 运行 它。基于 REST,它擅长提供有关资源的信息。如果您想要一个基于对某些资源集合创建、读取、更新、删除的想法的 API,那么这可能是一个不错的选择。

Json-API 如果您的 API 是基于资源的,并且您希望您的 API 无需设置即可被人类浏览,那么

Json-API 会更好为它准备文档。尽管那个人可能需要在软件工程领域才能理解它。

Json-如果您的 API 是基于函数的,或者您想要它提供的灵活性,那么 RPC 会更好。 Json-RPC 仍可用于通过为您的资源创建创建、读取、更新和删除函数来操作资源,但您无法获得可浏览性,因为它不是基于 REST 的。人类仍然可以通过根据您公开的功能生成文档来探索(而不是浏览)它。

使用 Json-Rpc 的一个流行示例是比特币。

有很多流行的基于 REST 的 API,而 Json-API 是一个包含大量工具的规范,可以帮助您正确地使用 REST。

--

注意:当您考虑开发时间、性能或效率时,这些(Json-RPC 或 Json-API)都不好使用网络资源。

如果您关心性能、效率或开发人员时间,请查看 Google 的 gRPC,它在这些方面非常棒,并且仍然可以比使用REST API 因为可以从协议定义文件生成客户端和服务器代码。