JSON RPC - Для чего нужен «id»? - PullRequest
16 голосов
/ 06 февраля 2010

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

P.S. Идентификатор, на который я ссылаюсь, это идентификатор здесь:

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

Ответы [ 5 ]

21 голосов
/ 06 февраля 2010

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

8 голосов
/ 22 февраля 2010

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

Если вы делаете синхронные одиночные вызовы, это может не иметь смысла, но в среде асинхронных многоуровневых вызовов это жизненно важно.

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

1 голос
/ 25 сентября 2017

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

JSON RPC 1.0 :

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

JSON RPC 2.0 :

Идентификатор, установленный Клиентом, который ДОЛЖЕН содержать строку, Число или значение NULL, если оно включено. Если он не включен, предполагается быть уведомлением. Значение ДОЛЖНО обычно не быть нулевым и Числа НЕ ДОЛЖНЫ содержать дробных частей.

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

0 голосов
/ 01 июля 2018

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

0 голосов
/ 14 апреля 2015
  1. Чтобы сервер знал, что вы ожидаете ответа.
  2. Для сопоставления ответов на запросы при использовании асинхронных или пакетных вызовов .
...