2010-02-05 10 views
11

Non capisco a cosa serve l'ID in JSON RPC. Inoltre, quanto è considerato negativo non utilizzare gli standard di JSON-RPC.org durante lo sviluppo di un toolkit? Sembra esserci qualche ambiguità nel mondo JSON-RPC.JSON RPC - A cosa serve "id"?

P.S. L'ID mi riferisco è l'id qui:

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

risposta

15

Non la garanzia di ottenere le risposte indietro nell'ordine lei ha chiesto per loro; l'ID è per aiutarti a risolverlo.

+1

Oh, nel caso di chiamate asincrone. Ciò ha senso. – orokusaki

+3

Cosa succede se JSON-RPC su HTTP? L'ID sembra essere inutile dal momento che HTTP è progettato dal modello richiesta-risposta. –

+0

@JianWeihang La specifica è indipendente dal trasporto. Quindi sì, non avrà molto senso su una richiesta HTTP che ha solo una richiesta JSON-RPC. Ma se si tratta di una richiesta JSON-RPC a più chiamate, in una singola richiesta HTTP, gli ID verranno utilizzati per mappare correttamente le risposte, poiché verranno anche tutte in un'unica risposta HTTP. – tstark81

6

"id" viene restituito nell'oggetto di risposta corrispondente, quindi è possibile mappare un contesto all'altro.

Se si effettuano chiamate sincrone singole, potrebbe non avere senso, ma in un ambiente di chiamata multi-sospeso asincrono è di vitale importanza.

Non dovrebbe essere codificato su 1, ma impostato su un valore univoco per ogni oggetto richiesta generato dal client.

0
  1. Per far sapere al server che ci si aspetta una risposta.
  2. Per abbinare le risposte alle richieste quando si utilizza asincrono o batch calls.
0

Nessuna delle risposte menziona la differenza tra le due versioni esistenti del protocollo.

JSON RPC 1.0:

La richiesta id. Questo può essere di qualsiasi tipo. Viene utilizzato per abbinare la risposta alla richiesta a cui sta rispondendo.

JSON RPC 2.0:

Un identificativo stabilito dal Cliente che deve contenere una stringa, numero, o il valore NULL se inclusi. Se non è incluso, si suppone che sia una notifica. Il valore DOVREBBE normalmente non essere Null e numeri NON DEVE contenere parti frazionarie.

Pertanto, in JSON RPC 2.0 è perfettamente impostato impostare un valore fisso. Ma sii consapevole dell'uso dell'ID nelle richieste batch.