Despertando a los Negocios

7 consejos para maximizar el uso de la API de Shopify

Shopify API Tips

La API de Shopify es un poderoso recurso que le permite añadir funcionalidad adicional a cualquier tienda Shopify. A medida que una tienda crece en tamaño y complejidad, es importante asegurarse de que utiliza la API de Shopify de forma inteligente y eficaz.

En este artículo, le explicaré siete consejos fundamentales para maximizar el uso de la API de Shopify. Estos consejos deberían ayudar a que los trabajos de API se ejecuten de forma más rápida y eficaz, para que pueda sacar el máximo provecho del uso de la API de Shopify.

1. Crear un plan de uso de la API

El primer paso para maximizar su uso requiere que haga una planificación inicial de cómo interactuará con las APIs. Esto significa crear un plan de uso de la API. Al planificar su uso previsto de antemano, estará mejor preparado para identificar los problemas y agilizar sus esfuerzos.

Su plan de API debe incluir:

  • Actualizaciones de productosActualizaciones de inventarioCumplimiento de pedidos
  • ¿Cuántas llamadas a la API (aproximadamente) se necesitarán en promedio para cada uno de estos trabajos?
  • ¿Con qué frecuencia necesita ejecutar cada tipo de trabajo?

La API de Shopify está diseñada para extraer datos rápidamente. Sin embargo, en la mayoría de los casos, las actualizaciones requieren una llamada a la API para cada elemento que se actualiza.

Por ejemplo, basado en una tienda de 1.000 productos:

  • Para obtener los 1.000 productos se necesitarán 4 llamadas a la API, a 250 cada una.
  • La actualización de los 1.000 productos aceptará 1.000 llamadas a la API, ya que es necesario realizarlas de una en una.

2. Programar jobs simultáneamente

Para ayudar a administrar el uso de su API, necesitará algún tipo de planificador de trabajos que sea capaz de hacer:

  • Ejecución de jobs en proceso de fondo
  • Ejecución de varios trabajos a la vez
  • (Opcionalmente) Reintentando trabajos que fallaron

Ejecutar trabajos simultáneamente reducirá el tiempo total que se tarda en completar los trabajos en lugar de ejecutarlos en serie. El límite de llamadas de Shopify API sólo permite dos solicitudes por segundo. Sin embargo, gracias a su fórmula de cubo con fugas, este límite permite ráfagas de hasta 40 llamadas API.

Si estás usando Ruby, yo personalmente uso y recomiendo Sidekiq como programador de trabajos.

3. Sincronizar solicitudes en torno a un presupuesto de llamadas de API compartida

Cada solicitud a Shopify API devuelve el límite de llamadas restante disponible como encabezado en la respuesta:

Cuando ejecute varios trabajos en segundo plano simultáneamente, cada uno de ellos consumirá una de sus llamadas a la API.

Cuando se ejecutan trabajos simultáneamente, no basta con comprobar el límite de llamadas restante en la cabecera, ya que este límite es consumido por muchos trabajadores al mismo tiempo.

Por ejemplo, dado este escenario:

Si las tres llamadas de API rastrean su propio límite de llamadas, pensarían que una llamada de API todavía está disponible. Los tres intentarían enviar la solicitud, pero dos de ellos recibirían el temido error 429 – Too Many Requests.

El enfoque menos que ideal sería simplemente ejecutar cada trabajo hasta que llegue al error 429 – Too Many Requests. Entonces usted dormiría por una cantidad arbitraria de tiempo y lo intentaría de nuevo.

Un mejor enfoque es usar un contador compartido para rastrear las llamadas restantes. Esto evita que pierda tiempo o recursos enviando solicitudes a Shopify sólo para descubrir que no hay llamadas a la API disponibles. Para implementar este enfoque, cada llamada a Shopify API debe hacer lo siguiente:

  • Compruebe el presupuesto restante compartido para asegurarse de que hay una llamada de API disponible.
  • Disminuir el presupuesto restante compartido
  • Cuando se reciba la respuesta de Shopify, establezca el presupuesto restante compartido en función de las devoluciones de Shopify.

He aquí un ejemplo de Ruby que utiliza un credits_remaining compartido, protegido con un Mutex para que sólo un hilo pueda modificarlo a la vez:

Para probar esta funcionalidad, podemos hacer girar 42 hilos para alcanzar nuestro límite rápidamente:

Esto da como resultado el siguiente resultado:

Cabe señalar que esta técnica no es perfecta. Las respuestas de Shopify pueden ser procesadas fuera de orden como puede ver en la salida de la muestra. Esto le daría un límite de llamadas de api total actual incorrecto.

Como resultado, planee dejar un poco de búfer (en el ejemplo usé cinco como búfer) y agregar soporte para reintentar llamadas fallidas a la API.

Nota: Si no estás usando Ruby o Sidekiq, puedes usar algo comoRedispara rastrear su contador de presupuesto compartido.

4. Programe sus trabajos de forma eficiente

Puede maximizar su presupuesto de llamadas a la API utilizando algunas técnicas sencillas de programación:

  • Iniciar jobs en diferentes bloques de tiempo
  • Agrupar trabajos más pequeños o más rápidos
  • Mantenga por separado los trabajos más grandes y los más lentos para permitirles el límite completo de la API.

Programar sus trabajos de manera más eficiente le permitirá distribuir su carga de trabajo de manera más uniforme a lo largo del día. Cada grupo de trabajos debe completarse antes de que termine el siguiente, de lo contrario, es posible que la cola de trabajos crezca más rápido de lo que se puede terminar.

5. Solicite sólo lo que necesite

Cuando se solicitan datos de las API de Shopify, siempre es una buena idea pedir sólo los elementos específicos que se necesitan. La mayoría de las vistas de lista de la API tienen una opción de campos que puede utilizar para limitar la información devuelta.

Por ejemplo, si desea obtener una lista de ID de productos y títulos, puede solicitar sólo esos valores así:

Esto tiene dos ventajas principales:

  • Es necesario enviar menos datos, por lo que la carga útil debería ser más rápida de recibir.
  • Shopify necesita menos trabajo para construir los datos

En particular, menos trabajo para Shopify es probablemente el mayor beneficio. Si Shopify puede construir la respuesta más rápido, eso debería reducir el tiempo total de reloj que se necesita para ejecutar cada solicitud. Esto debería resultar en un aumento neto en su presupuesto efectivo de API.

6. Sólo actualizar las cosas que han cambiado

De forma similar a solicitar sólo lo que necesita, sólo debe enviar a Shopify los campos que han cambiado.

Por ejemplo, si necesita actualizar el inventario de variantes, puede enviar sólo el identificador de variante y los datos de cantidad_inventario de este modo:

Además, tenga en cuenta que puede actualizar por lotes los datos de las variantes de los productos, lo que también reducirá en gran medida el total de llamadas a la API para realizar este trabajo.

El envío de menos datos hará que las llamadas a la API vuelvan mucho más rápido, ya que Shopify no necesitará actualizar muchos registros en su base de datos ni realizar ningún procesamiento adicional.

Nota: En particular, enviar urls de imágenes cada vez causará mucho trabajo extra para que Shopify reprocese las mismas imágenes.

7. Tenga cuidado con el almacenamiento de datos en demasiados lugares

Como se mencionó anteriormente, Shopify agiliza la recuperación de datos, pero las actualizaciones requieren una llamada para cada elemento que se actualiza. Como resultado, si no tiene cuidado, es posible que tenga que hacer muchas llamadas adicionales a la API para actualizar cada dato.

El lugar más común donde esto puede ocurrir es a través del uso de metacampos. Los metacampos le permiten almacenar datos adicionales en muchos lugares de la API de Shopify, incluyendo: Productos, variantes, pedidos, etc.

Para destacar este problema, supongamos que tiene una tienda con 1.000 productos, cada uno con cinco variantes. Supongamos que desea almacenar dos atributos adicionales con cada variante: Ancho y Alto.

Si los añade como metacampos de variantes, será necesario:

  • 5.000 llamadas a la API para actualizar el metacampo Ancho para cada variante.
  • 5.000 llamadas a la API para actualizar el metacampo de Altura para cada variante.

Sin embargo, otro enfoque que he estado usando es almacenar estos atributos como un JSON Hash dentro de un metacampo de producto como este:

La clave para el Hash en este ejemplo es la variante SKU. Esto reduce el número de llamadas a la API necesarias para actualizar estos valores de 10.000 a 1.000. Yo diría que es una reducción impresionante.

Para obtener valores para un SKU específico, puede buscarlo así:

Nota: En el momento de redactar este documento, puede crear metacampos de variantes en masa si los envía como parte de una actualización de Producto. Sin embargo, no puede modificar los metacampos de variantes existentes en masa.

Empieza a maximizar el uso de Shopify API

Este artículo cubre siete consejos críticos para maximizar el uso de la API de Shopify. Estos consejos incluyen

  • Crear un plan de uso de la API
  • Programar jobs simultáneamente
  • Sincronizar solicitudes en torno a un presupuesto de llamadas de API compartida
  • Programe sus trabajos de forma eficiente
  • Solicite sólo lo que necesite
  • Sólo actualizar las cosas que han cambiado
  • Tenga cuidado con el almacenamiento de datos en demasiados lugares

Si las sigue como guía, podrá ampliar un poco más su presupuesto de Shopify API y simplificar el uso general de la API.

Puede acceder al código completo utilizado para crear estos ejemplos en Github.

¿Cuáles son tus consejos favoritos para utilizar Shopify API? Compártalas en los comentarios de abajo.

¿Quieres saber más sobre cómo crear aplicaciones para Shopify? Consulte nuestra completa lista de artículos sobre el desarrollo de aplicaciones Shopify y la API Shopify.

Aquí te compartimos un artículo acerca de cómo aprovechar un crédito si vendes productos en línea