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

Dmi*_*kov 2 json json-rpc json-api

任何人都可以解释使用json-rpc优于json-api的优势,反之亦然?第一种和第二种格式是基于JSON的,但我应该使用哪一种,哪一种是另一种?

Aus*_*ris 8

注意:我可能会遇到一些偏见.我是Json-RPC.ne服务器库的作者.

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

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

如果您的API是基于资源的,那么Json-API会更好,并且您希望您的API可以被人类浏览,而无需为其设置文档.虽然人类可能需要进入软件工程领域才能理解它.

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

使用Json-Rpc的一个流行的例子是BitCoin.

有许多流行的基于REST的API和Json-API是一个带有一堆工具的规范,可以帮助您正确地执行REST.

-

注意:当您考虑开发人员的时间,性能或有效使用网络资源时,这些(Json-RPC或Json-API)都不是很好.

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