31

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

PS我指的ID是这里的ID:

{"params":["Hello","World"],"method":"hello_world","id":1}
4

5 回答 5

34

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

于 2010-02-05T22:09:07.037 回答
12

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

如果您正在进行同步单次调用,这可能没有意义,但在异步多未完成调用环境中它是至关重要的。

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

于 2010-02-22T19:43:11.517 回答
6

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

JSON RPC 1.0

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

JSON RPC 2.0

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

因此,在 JSON RPC 2.0 中将 id 设置为某个固定值是非常好的。但要注意在批处理请求中使用 id。

于 2017-09-25T15:19:21.000 回答
2
  1. 表示您正在等待回复。(没有它,应该没有响应。)
  2. 在使用异步或批处理调用时匹配对请求的响应。
于 2015-04-14T10:36:01.950 回答
-3

您可以阅读 JSON RPC 文档https://www.jsonrpc.org/specification。在“4 请求对象”中,id 参数解释得很清楚。

于 2018-07-01T09:13:12.737 回答