JSON RPC - 什么是"id"?

oro*_*aki 16 json json-rpc

我不明白JSON RPC中的ID是什么.另外,在开发工具包时,考虑不使用JSON-RPC.org的标准有多糟糕?在JSON-RPC世界中似乎存在一些歧义.

PS我所指的ID是这里的ID:

{"params":["Hello","World"],"method":"hello_world","id":1}
Run Code Online (Sandbox Code Playgroud)

And*_*gor 22

您无法保证按照您要求的顺序得到您的答案; id是为了帮助你解决这个问题.

  • 如果JSON-RPC通过HTTP怎么办?ID似乎没用,因为HTTP是由请求 - 响应模式设计的. (6认同)
  • 哦,在异步调用的情况下.那讲得通. (3认同)
  • @JianWeihang 该规范与传输无关。所以是的,它对只有一个 JSON-RPC 请求的 HTTP 请求没有多大用处。但如果是多调用 JSON-RPC 请求,在单个 HTTP 请求中,ID 将用于正确映射响应,因为它们也将全部出现在单个 HTTP 响应中。 (3认同)

小智 8

"id"在相应的响应对象中返回,因此您可以将一个上下文映射到另一个上下文.

如果您正在进行同步单个呼叫,则可能没有意义,但在异步多重呼叫环境中,这一点至关重要.

它不应硬编码为1,而是为从客户端生成的每个请求对象设置唯一值.


ben*_*ben 5

没有一个答案提到协议的两个现有版本之间的区别。

JSON RPC 1.0

请求标识。这可以是任何类型。它用于将响应与其正在回复的请求相匹配。

JSON RPC 2.0

客户端建立的标识符,必须包含字符串、数字或 NULL 值(如果包含)。如果未包含,则假定为通知。该值通常不应为 Null 并且数字不应包含小数部分。

因此,在 JSON RPC 2.0 中将 id 设置为某个固定值是完全没问题的。但是要注意批量请求中 id 的使用。