JSON RPC-что такое " id " для?

Я не понимаю, для чего нужен ID в JSON RPC. Кроме того, насколько плохо он считается не использовать JSON-RPC.org ' s стандарты при разработке инструментария? Кажется, в мире JSON-RPC есть некоторая двусмысленность.

С. П. ИД я имею в виду-это идентификатор здесь:

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

5 ответов


вы не гарантированно получите свои ответы обратно в том порядке, в котором вы их просили; идентификатор должен помочь Вам разобраться в этом.


" id " возвращается в соответствующем объекте ответа, поэтому вы можете сопоставить один контекст с другим.

Если вы делаете синхронные одиночные вызовы, это может не иметь смысла, но в асинхронной среде с несколькими выдающимися вызовами это жизненно важно.

Он не должен быть жестко закодирован в 1, но установлен в уникальное значение для каждого объекта запроса, который вы генерируете от клиента.


ни в одном из ответов не упоминается разница между двумя существующими версиями протокола.

JSON RPC 1.0:

идентификатор запроса. Это может быть любого типа. Он использован для того чтобы соответствовать ответ с просьбой, на которую он отвечает.

JSON RPC 2.0:

идентификатор, установленный клиентом, который должен содержать строку, Число или значение NULL, если включено. Если это не включено предполагается быть уведомлением. Обычно значение не должно быть Null и Числа не должны содержать дробных частей.

таким образом, в JSON RPC 2.0 отлично установить id на некоторое фиксированное значение. Но помните об использовании id в пакетных запросах.


  1. чтобы сервер знал, что вы ожидаете ответа.
  2. чтобы соответствовать ответам на запросы при использовании асинхронного или пакетные звонки.

вы можете прочитать документ JSON RPC https://www.jsonrpc.org/specification. В" 4 объекта запроса " идентификатор param объясняется четко.