2010-02-05 23 views
11

No entiendo para qué es la ID en JSON RPC. Además, ¿qué tan malo se considera no utilizar los estándares de JSON-RPC.org al desarrollar un kit de herramientas? Parece haber cierta ambigüedad en el mundo JSON-RPC.JSON RPC - ¿Para qué sirve el "id"?

P.S. El ID que me refiero es el id aquí:

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

Respuesta

15

No está garantizado para obtener sus respuestas en el orden en que pidió para ellos; la identificación es para ayudarlo a resolverlo.

+1

Oh, en el caso de llamadas asíncronas. Eso tiene sentido. – orokusaki

+3

¿Qué pasa si JSON-RPC sobre HTTP? ID parece ser inútil ya que HTTP está diseñado por patrón de solicitud y respuesta. –

+0

@JianWeihang La especificación es independiente del transporte. Así que sí, no tendrá mucho uso en una solicitud HTTP que solo tenga una solicitud JSON-RPC. Pero si se trata de una solicitud JSON-RPC de varias llamadas, en una sola solicitud HTTP, los ID se usarán para asignar correctamente las respuestas, ya que también aparecerán todas en una única respuesta HTTP. – tstark81

6

El "id" se devuelve en el objeto de respuesta correspondiente, por lo que puede asignar un contexto al otro.

Si realiza llamadas únicas sincrónicas, es posible que no tenga sentido, pero en un entorno asincrónico de llamada múltiple es vital.

No debe estar codificado en 1, sino en un valor único para cada objeto de solicitud que genere del cliente.

0
  1. Para hacerle saber al servidor que espera una respuesta.
  2. Para hacer coincidir las respuestas a las solicitudes cuando se usa asincrónico o batch calls.
0

Ninguna de las respuestas menciona la diferencia entre las dos versiones existentes del protocolo.

JSON RPC 1.0:

La solicitud de identificación. Esto puede ser de cualquier tipo. Se usa para hacer coincidir la respuesta con la solicitud a la que está respondiendo.

JSON RPC 2.0:

Un identificador establecido por el cliente que debe contener una cadena, Número, o el valor NULL si se incluye. Si no está incluido, se supone como una notificación. El valor DEBERÍA NO ser nulo normalmente y Los números NO DEBEN contener partes fraccionarias.

Por lo tanto, está perfectamente bien en JSON RPC 2.0 para establecer la identificación a un valor fijo. Pero tenga en cuenta el uso de id en solicitudes por lotes.