正确的JSON API或JSON RPC

什么是JSON API?


当然知道的很多。

JSON - JSON数据交换的文本格式
API - API应用程序编程接口

此处的关键字:数据交换接口。

A,那么什么是JSON-RPC?



JSON-我们已经知道了。

RPC-远程过程调用RPC

我们得出结论,JSON-RPC是:远程数据交换。

当然,此数据交换将通过特定的接口进行,即 使用API​​。

有什么问题吗? 你问。 事实上,一些开发JSON API(即接口)的程序员忘记了JSON-RPC,然后自行车的下一个发明就开始了。 前端程序员说:“我会给你这样的json”,后端程序员回答:“我会给你这样的json”。 一切都很好,但是最好记住,聪明的人已经开发了很长时间的标准,或者说是数据交换协议。 而不是一些非常复杂但非常简单的: JSON-RPC

即使不是说几乎每个人都知道甚至使用这些协议,也是很有可能的。 编写了一堆服务器,等等。 但是就个人而言,并不是所有内容都适合我现有的协议。 在我看来,它们似乎不够灵活,在所有方面都不合逻辑。 您可能已经猜到了,我决定发明自行车json-rpc-1.5

与现有协议的主要区别在于:


  • 可选的“ sign”参数-签名或令牌
  • 在查询中,使用data参数代替了param参数,因为 我们总是发送数据,而不仅仅是参数。
  • 在所有答案中,始终返回参数“结果”,并且该参数包含对查询结果“成功”或“错误”的描述。
  • 响应中的所有数据都在“ data”参数中
  • 您可以使用别名来命名请求和响应参数。

似乎。 差异很小,但是从根本上来说很重要。
顺便说一句,该协议在实践中出现了,即 创建json api时,我使用了此协议中描述的方法。

PS:


收到了很多负面评论和缺点之后,我决定再次检查一下,也许我确实做错了什么? 自然,我在这里写的只是我的个人观点,我不对任何人强加任何东西。 让我举几个例子:
1. Yandex直接JSON API请求示例:
{ "method": "GetClientInfo", "param": ["agrom"], "locale": "ru", "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f" } 

他们还可以阅读有关令牌的信息: 授权令牌

2. 使用Apple Pay从移动应用程序进行 Sberbank API 支付的示例
我不会给出JSON请求,因为它很大,您可以看到链接。
JSON请求必须包含“ paymentToken”,这一点很重要。 这是苹果代币形成要求的链接

重要的是要理解,API中的令牌和签名经常与其他保护方法一起使用。 那些使用各种AP​​I的人都非常了解这一点。

Source: https://habr.com/ru/post/zh-CN429524/


All Articles