software1

Se suspende la compatibilidad con los puntos finales globales por lotes JSON RPC y HTTP


Actualizado por Shilpa Kamalakar, Gerente de programa técnico

Hemos invertido mucho en nuestra infraestructura de API y servicio para mejorar el rendimiento y la seguridad y agregar características que los desarrolladores necesitan para construir API de clase mundial. Cuando hacemos cambios, debemos considerar características que ya no son compatibles con la arquitectura más reciente y los requisitos comerciales.

El protocolo JSON-RPC ( http://www.jsonrpc.org/specification ) y Global HTTP Batch ( ejemplo ) son dos de estas características. Nuestro soporte para estas características se basó en una arquitectura que utilizaba un solo proxy compartido para recibir solicitudes de todas las API. Ya no podemos admitir estos puntos finales globales a medida que pasamos a una arquitectura distribuida de alto rendimiento que envía solicitudes directamente al servidor API apropiado.

Originalmente planeamos desmantelar estas características antes del 25 de marzo de 2019. Sin embargo, notamos que solo unos pocos clientes gravemente afectados pueden no haber recibido la notificación anterior.
Como resultado, ampliamos el período de vencimiento hasta el 12 de agosto de 2020 si descontinuamos el soporte para ambas funciones.

Desde febrero de 2020 hasta agosto de 2020, se incluirán regularmente ventanas a corto plazo. Justo antes de febrero de 2020, proporcionaremos detalles precisos y un cronograma para estas ventanas de inyección de errores.

Sabemos que estos cambios tienen un impacto en los clientes y hemos tratado de hacer los pasos de transición lo más claros posible. Siga las instrucciones a continuación para facilitar la transición.

¿Cómo sé si debo migrar?

JSON-RPC

Para determinar si está utilizando JSON-RPC, puede verificar que tiene solicitudes para "https: //www.googleapis.com/rpc" o [19659013] "https://content.googleapis.com/rpc" . Si lo hace, debe migrar.

Lote HTTP

Una solicitud de lote es homogénea si se dirigen las solicitudes internas a la misma API, incluso si se dirigen a diferentes métodos de la misma API. El procesamiento por lotes homogéneo aún es compatible, pero con puntos finales de lote específicos de la API. Si actualmente está creando solicitudes por lotes homogéneas con Bibliotecas de cliente API de Google o con bibliotecas de cliente API que no son de Google o sin una biblioteca de cliente (por ejemplo, solicitudes HTTP sin procesar), debe migrar.

Una solicitud por lotes es heterogénea cuando las solicitudes internas se envían a diferentes API. El procesamiento por lotes heterogéneo no es compatible después de cerrar el punto final global de procesamiento por lotes HTTP. Si actualmente está creando solicitudes por lotes heterogéneas, cambie su código de cliente para enviar solo solicitudes por lotes homogéneas; H. Deberías migrar.

¿Qué necesitas hacer para la migración?

Los clientes deben realizar los siguientes cambios en la migración.

JSON-RPC

Uso de bibliotecas de cliente

Si usa bibliotecas de cliente JSON RPC (bibliotecas publicadas por Google u otras bibliotecas), cambie a bibliotecas de cliente REST y cambie su aplicación a para trabajar con bibliotecas de cliente REST.

Código de muestra Javascript

Antes

  // solicitud de json-rpc para el método de lista
gapi.client.rpcRequest (& # 39; zoo.animals.list & # 39;, & # 39; v2 & # 39;
nombre: jirafa & # 39;). ejecutar (x => console.log (x))

Después de

  // solicitud de resto json para el método de lista 
gapi.client.zoo.animals.list (nombre: & giraffe & # 39;). entonces (x => console.log (x))

No se utilizan bibliotecas cliente, p. Ej. B. Solicitudes HTTP sin procesar

Si no utiliza bibliotecas de cliente (es decir, realice solicitudes HTTP sin procesar):

  1. Utilice las URL REST y
  2. Cambia la forma en que haces la solicitud y analiza la respuesta.

    Código de muestra

    Anterior

      // URL de solicitud (JSON-RPC)
    POST https://content.googleapis.com/rpc?alt=json&key=xxx
    // cuerpo de solicitud (JSON-RPC)
    [
      "jsonrpc":"2.0",
      "id":"gapiRpc",
      "method":"zoo.animals.list",
      "apiVersion":"v2",
      "params":"name":"giraffe"
    ]
    

    Solicitud

      // URL (JSON-REST)
    GET
    https://content.googleapis.com/zoo/v2/animals?name=giraffe&key=xxx 

HTTP Batch

Solicitudes heterogéneas de lotes

Si actualmente está creando solicitudes heterogéneas de lotes, cambie su código de cliente para enviar solo solicitudes de lote homogéneas.

Código de muestra
Este ejemplo ilustra cómo una solicitud de lote heterogéneo para 2 Apis (acortadores de urls y zoológico) se puede dividir en 2 solicitudes de pila homogéneas.

Anterior

  // Ejemplo de una solicitud de lote heterogéneo.

// Tenga en cuenta que la solicitud de pila externa contiene solicitudes de API internas
// para dos API diferentes.

// Solicitud a urlshortener API
request1 = gapi.client.urlshortener.url.get ("shortUrl":
"Http://goo.gl/fbsS");

// Solicitud a la API de Zoo
request2 = gapi.client.zoo.animals.list ();

// Solicitud a urlshortener API
request3 = gapi.client.urlshortener.url.get ("shortUrl":
"Https://goo.gl/XYFuPH");

// Solicitud a la API de Zoo
request4 = gapi.client.zoo.animal (). get ("nombre": "jirafa");

// Crear un único objeto de solicitud de lote heterogéneo
heterogeneousBatchRequest = gapi.client.newBatch ();
// Agrega las 4 solicitudes por lotes
heterogeneousBatchRequest.add (request1);
heterogeneousBatchRequest.add (request2);
heterogeneousBatchRequest.add (request3);
heterogeneousBatchRequest.add (request4);
// Imprime la solicitud de lote heterogéneo
lote heterogéneo request.then (x => console.log (x));

Según

  // Divida los requisitos de apilamiento heterogéneos en dos requisitos de apilamiento homogéneos

// Solicitud a urlshortener API
request1 = gapi.client.urlshortener.url.get ("shortUrl": "http://goo.gl/fbsS");

// Solicitud a la API de Zoo
request2 = gapi.client.zoo.animals.list ();

// Solicitud a urlshortener API
request3 = gapi.client.urlshortener.url.get ("shortUrl": "http://goo.gl/fbsS")

// Solicitud a la API de Zoo
request4 = gapi.client.zoo.animals.list ();

// Crear un objeto de solicitud de lote homogéneo para urlshorterner
homogeneusBatchUrlshortener = gapi.client.newBatch ();
// Agregue las 2 solicitudes por lotes para urlshorterner
homogeneusBatchUrlshortener.add (request1);
homogeneusBatchUrlshortener.add (request3);

// Crear un objeto de solicitud de lote homogéneo para el zoológico
homogeneusBatchZoo = gapi.client.newBatch ();

// Agrega las 2 solicitudes de lote para el zoológico
homogeneusBatchZoo.add (request2);
homogeneusBatchZoo.add (request4);
// Imprime los 2 trabajos por lotes homogéneos
Promise.all ([homogenousBatchUrlshortener,homogenousBatchZoo])
.then (x => console.log (x));

Requisitos de lotes homogéneos

Bibliotecas de cliente API de Google

Cuando utiliza Bibliotecas de cliente API de Google estas bibliotecas se han regenerado para dejar de realizar solicitudes al punto final global HTTP proporcionar. Los clientes que usan estas bibliotecas deben, si es posible, actualizar a la última versión. Consulte las instrucciones específicas del idioma a continuación para conocer los requisitos mínimos para actualizar a la Biblioteca de cliente API de Google.

. 1 Java

  • La versión mínima admitida de Google Client Library es 1.23.1.
  • Pasos del consumidor
    1. Actualice todos los paquetes del Servicio API de Google ("com.google.apis") a una versión con la versión de biblioteca compatible 1.23.1 o posterior. Por ejemplo, actualice "com.google.apis: google-api-services-drive" de "v3-rev159-1.22.0" a "v3-rev20190620-1.30.1".

      1. Si importa explícitamente "com" .google.api-client: google-api-client, actualice `com.google.api-client: google-api-client` a la versión 1.23.1 o posterior.
    2. Asegúrese de crear su BatchRequest (es decir)
      Instancia com.google.api.client.googleapis.batch.BatchRequest a través de su cliente de servicio. El constructor BatchRequest ahora está obsoleto y no funcionará en el futuro. En su lugar, use el método por lotes () de su cliente de servicio para crear una nueva solicitud por lotes utilizando el siguiente ejemplo
  • Código de muestra

  Drive client = Drive.builder (transport, jsonFactory,
credencial) .setApplicationName ("BatchExample / 1.0"). construir
();

BatchRequest batch = client.batch ();

  • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
  • Reconstrucción

  • 2. Python

    • La versión mínima admitida de la Biblioteca de cliente de Google es 1.6.6.
    • Pasos del consumidor
      • Actualización a la versión 1.6.6 o superior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción
    • Tenga en cuenta que se incluye una advertencia cuando los usuarios intentan crear una solicitud con el punto final de lote heredado. Consulte Release para referencia.

    . 3 PHP

    • La versión mínima admitida de la Biblioteca de clientes de Google es 0.86.
    • Pasos del consumidor
      • Actualización a la versión 0.86 o posterior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción

    . 4 .NET

    • La versión mínima admitida de la Biblioteca de clientes de Google es 1.32.2.
    • Pasos del consumidor
      • Actualización a la versión 1.32.2 o superior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción

    . 5 Javascript

    • Si utiliza la biblioteca de cliente javascript, contáctenos con sus preguntas. Haremos todo lo posible para ayudarlo.

    . 6 Objetivo-C

    • La versión mínima admitida de la Biblioteca de clientes de Google es 1.3.0.
    • Pasos del consumidor
      • Actualización a la versión 1.3.0 o superior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción

    . 7 Dart

    • La biblioteca de cliente de API Dart de Google no admite estas características.

    . 8 Ruby

    • La versión mínima admitida de la Biblioteca de clientes de Google es 0.11.0.
    • Pasos del consumidor
      • Actualización a la versión 0.11.0 o superior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción

    . 9 Node.js

    • La versión mínima admitida de Google Client Library es 1.0.
    • Pasos del consumidor
      • Actualización a la versión 1.0 o superior
      • Para una pila global, asegúrese de que su código no especifique explícitamente la ruta de la pila global (es decir, "/ lote" al final de la ruta). Si es así, cámbielo para referirse a la ruta específica de la API / versión (ejemplo " / batch / library / v1 " ).
      • reconstrucción

    10a Ir

    • La biblioteca del cliente Google API Go no admite estas funciones.

    . 11 C ++

    • La Biblioteca de cliente API Google C ++ se suspendió por razones no relacionadas. Sin embargo, si necesita el cliente por lotes de C ++ a corto plazo, lea los siguientes pasos para usuarios finales.
    • Pasos del consumidor
      • Modifique el código de la aplicación para pasar explícitamente la URL del lote no global a la biblioteca del cliente C ++, es decir, pasar el punto final específico de la versión de la API (ejemplo " / batch / library / v1 ] para el método de sobrecarga. Establece el punto final del lote como un parámetro explícito, ya que no es útil actualizar la biblioteca del cliente C ++ a la última versión.

        Código de muestra

        Siguiente

          HttpRequestBatch Stack (Servicio-> Transporte ()); 

        Después de

          pila HttpRequestBatch (Servicio-> Transporte (),
        servicio-> lote_url ());
        
      • Vinculación, reconstrucción y reasignación

    Bibliotecas de cliente API que no son de Google o Biblioteca sin cliente

    Si actualmente está creando solicitudes por lotes homogéneas y está utilizando bibliotecas de cliente API que no son de Google o ninguna biblioteca de cliente (es decir, creando solicitudes HTTP sin procesar) ), entonces:

    • Cambie el punto final de "www.googleapis.com/batch" a "www.googleapis.com/batch/[19459032</[19459033".
    • O simplemente lea el valor de & # 39; batchPath & # 39; del documento de reconocimiento de la API y use este valor.

    Estamos aquí para ayudarlo

    Para obtener información sobre la migración, consulte la documentación de la API o haga preguntas sobre el desbordamiento de la pila con la etiqueta "google-api" proporcionada.



    Control de obras 3000 de Cea Ordenadores

    Comentarios desactivados en Se suspende la compatibilidad con los puntos finales globales por lotes JSON RPC y HTTP