2010-02-05 111 views
11

我不明白在JSON RPC中ID是什么。另外,在开发工具包时不考虑使用JSON-RPC.org的标准有多糟?在JSON-RPC世界中似乎有一些含糊不清的地方。JSON RPC - 什么是“id”?

P.S.我指的是该ID是在这里ID:

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

回答

15

你不能保证让你的答案回在你要求的顺序;该ID是为了帮助你解决这个问题。

+1

哦,在异步调用的情况下。这就说得通了。 – orokusaki 2010-02-05 22:29:28

+3

如果通过HTTP使用JSON-RPC会怎么样? ID似乎是无用的,因为HTTP是通过请求 - 响应模式设计的。 – 2014-07-19 04:45:12

+0

@JianWeihang该规范与传输无关。所以是的,它对于只有一个JSON-RPC请求的HTTP请求没有多大用处。但是,如果它是一个多调用JSON-RPC请求,则在一个HTTP请求中,这些ID将用于正确映射响应,因为它们也将全部来自单个HTTP响应。 – tstark81 2015-09-25 03:55:51

6

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

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

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

0
  1. 让服务器知道您期待的回复。
  2. 使用异步或batch calls匹配对请求的响应。
0

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

JSON RPC 1.0

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

JSON RPC 2.0

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

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