Articulo de referencia

JSON-RPC

JSON-RPC (JavaScript Object Notation-Remote Procedure Call) es un protocolo de llamada a procedimiento remoto (RPC) codificado en JSON . Es similar al protocolo XML-RPC , ya que...

JSON-RPC (JavaScript Object Notation-Remote Procedure Call) es un protocolo de llamada a procedimiento remoto (RPC) codificado en JSON . Es similar al protocolo XML-RPC , ya que define solo algunos tipos de datos y comandos. JSON-RPC permite enviar notificaciones (datos enviados al servidor que no requieren una respuesta) y múltiples llamadas al servidor que pueden responderse de forma asincrónica.

Historia

Uso

JSON-RPC funciona enviando una solicitud a un servidor que implementa este protocolo. En ese caso, el cliente suele ser un software que intenta llamar a un único método de un sistema remoto. Se pueden pasar múltiples parámetros de entrada al método remoto como una matriz u objeto, mientras que el propio método también puede devolver múltiples datos de salida (esto depende de la versión implementada).

Todos los tipos de transferencia son objetos únicos, serializados mediante JSON. [1] Una solicitud es una llamada a un método específico proporcionado por un sistema remoto. Puede contener tres miembros:

  • method- Una cadena con el nombre del método que se invocará. Los nombres de métodos que comienzan con "rpc." están reservados para los métodos internos de rpc.
  • params- Un objeto o matriz de valores que se pasarán como parámetros al método definido. Este miembro puede omitirse.
  • id- Una cadena o un número no fraccionario que se utiliza para hacer coincidir la respuesta con la solicitud a la que está respondiendo. [2] Este miembro puede omitirse si no se debe devolver ninguna respuesta. [3]

El receptor de la solicitud debe responder con una respuesta válida a todas las solicitudes recibidas. Una respuesta puede contener los miembros que se mencionan a continuación.

  • result- Los datos devueltos por el método invocado. Si se produjo un error al invocar el método, este miembro no debe existir. [4]
  • error- Un objeto de error si se produjo un error al invocar el método; de lo contrario, este miembro no debe existir. [5] El objeto debe contener los miembros código (entero) y mensaje (cadena). [6] Un miembro de datos opcional puede contener más datos específicos del servidor. Hay códigos de error predefinidos que siguen a los definidos para XML-RPC.
  • id- El ID de la solicitud a la que está respondiendo.

Dado que hay situaciones en las que no se necesita ni se desea ninguna respuesta, se introdujeron las notificaciones. Una notificación es similar a una solicitud, excepto por el ID, que no es necesario porque no se devolverá ninguna respuesta. En este caso, la idpropiedad debe omitirse (versión 2.0) o debe incluirse null(versión 1.0).

Ejemplos

En estos ejemplos, -->denota datos enviados a un servicio ( solicitud ), mientras que <--denota datos que provienen de un servicio. Aunque <--a menudo se denomina respuesta en la informática cliente-servidor, según la versión de JSON-RPC no implica necesariamente una respuesta a una solicitud .

Versión 2.0

Solicitud y respuesta:

-- > { "jsonrpc" : "2.0" , "método" : "restar" , "parámetros" : { "minuendo" : 42 , "sustraendo" : 23 }, "id" : 3 } < -- { "jsonrpc" : "2.0" , "resultado" : 19 , "id" : 3 }           
      

Notificación (sin respuesta):

-- > { "jsonrpc" : "2.0" , "método" : "actualizar" , "parámetros" : [ 1 , 2 , 3 , 4 , 5 ]}      

Versión 1.1 (borrador de trabajo)

Solicitud y respuesta:

-- > { "versión" : "1.1" , "método" : "confirmarCompraDeFruta" , "parámetros" : [[ "manzana" , "naranja" , "mangos" ], 1.123 ], "id" : "194521489" } < -- { "versión" : "1.1" , "resultado" : "hecho" , "error" : nulo , "id" : "194521489" }           
        

Versión 1.0

Solicitud y respuesta:

-- > { "método" : "echo" , "parámetros" : [ "Hola JSON-RPC" ], "id" : 1 } < -- { "resultado" : "Hola JSON-RPC" , "error" : null , "id" : 1 }      
      

Véase también

  • gRPC
  • SOAP - un protocolo de mensajería
  • JSON-WSP : un protocolo inspirado en JSON-RPC con una especificación de descripción de servicio

Referencias

  1. ^ "Especificación - JSON-RPC - Trac". Archivado desde el original el 17 de mayo de 2008. Consultado el 14 de mayo de 2008 .
  2. ^ "Especificación JSON-RPC 2.0". id: Un identificador establecido por el Cliente que DEBE contener una Cadena, un Número o un valor NULO si se incluye. Si no se incluye, se supone que es una notificación. El valor NO DEBERÍA ser normalmente Nulo y los Números NO DEBERÍAN contener partes fraccionarias
  3. ^ "Especificación JSON-RPC 2.0". Una Notificación es un objeto de Solicitud sin un miembro "id". Un objeto de Solicitud que es una Notificación significa que el Cliente no está interesado en el objeto de Respuesta correspondiente y, como tal, no es necesario devolver ningún objeto de Respuesta al cliente. El Servidor NO DEBE responder a una Notificación, incluidas aquellas que se encuentran dentro de una solicitud por lotes. Las Notificaciones no son confirmables por definición, ya que no tienen un objeto de Respuesta que devolver. Como tal, el Cliente no estaría al tanto de ningún error (como, por ejemplo, "Parámetros no válidos", "Error interno").
  4. ^ "Especificación JSON-RPC 2.0". Resultado: Este miembro es OBLIGATORIO en caso de éxito. Este miembro NO DEBE existir si se produjo un error al invocar el método. El valor de este miembro lo determina el método invocado en el servidor.
  5. ^ "Especificación JSON-RPC 2.0". error: Este miembro es OBLIGATORIO en caso de error. Este miembro NO DEBE existir si no se ha producido ningún error durante la invocación. El valor de este miembro DEBE ser un objeto, tal como se define en la sección 5.1.
  6. ^ "Especificación JSON-RPC 2.0". Objeto de error: cuando una llamada rpc encuentra un error, el objeto de respuesta DEBE contener el miembro de error con un valor que sea un objeto con los siguientes miembros: (código): un número que indica el tipo de error que ocurrió. DEBE ser un entero. (mensaje): una cadena que proporciona una descripción breve del error. El mensaje DEBE limitarse a una sola oración concisa. (datos): un valor primitivo o estructurado que contiene información adicional sobre el error. Esto se puede omitir. El valor de este miembro lo define el servidor (por ejemplo, información detallada del error, errores anidados, etc.).
  • Sitio web oficial
  • Grupo de Google sobre JSON-RPC que debate temas relacionados con el protocolo
  • Especificaciones JSON-RPC, MNlinks, etc.
  • Descripción del transporte HTTP para JSON-RPC-2
  • Formato de descripción del servicio de especificación OpenRPC para JSON-RPC. (open-api, pero para json rpc)
  • JSend: una especificación similar que define solo el formato de respuesta
Obtenido de "https://es.wikipedia.org/w/index.php?title=JSON-RPC&oldid=1245854362"