Consumo de APIs con Shopify y React Server Components
Resumen
¿Cómo configurar la API de Shopify para una aplicación personalizada?
Cuando se trata de consumir una API, el proceso puede parecer inicialmente complicado, pero vamos a desglosarlo para que puedas dominarlo con facilidad. En esta oportunidad, nos centraremos en cómo realizar esta configuración en Shopify, un líder reconocido en el comercio electrónico. Primero, deberemos configurar la API de Shopify y crear un entorno que permita la interacción entre nuestra aplicación y Shopify.
Importar productos en Shopify
El primer paso es importar productos en tu tienda. Esto se hace accediendo a la sección de productos dentro del administrador de Shopify y utilizando un archivo CSV que puedes cargar. Luego de obtener una vista previa de los productos, clicas en "importar productos". Esto puede tardar unos minutos, pero una vez completado, tus productos deberían estar registrados satisfactoriamente.
Crear una aplicación personalizada
La finalidad de crear una aplicación personalizada en Shopify es para poder consumir la API y así obtener los datos de los productos que has importado. Para ello:
Dirígete a "Canales de venta" y selecciona "Configuración de aplicaciones y canales de venta".
A continuación, entra en "Desarrollar aplicaciones" y permite el desarrollo de aplicaciones personalizadas.
Introduce un nombre para la aplicación, en este caso, "Future World Yon API", y créala.
Configuración de permisos y credenciales de la API
Después de crear la aplicación:
Accede a "Credenciales de la API". Obtendrás una clave de API y una clave secreta, fundamentales para la autenticación.
Configura los permisos: puedes activar solo los que necesitas, como write and read products para manejar productos.
Guarda los cambios y regresa a "Tokens de acceso" para instalar la aplicación, obteniendo así el token de acceso, el cual debe ser almacenado de forma segura, ya que se revela solo una vez.
Uso de la documentación de Shopify para obtener productos
La documentación de Shopify explica cómo puedes obtener productos usando el hostname de tu aplicación y un header con el token de acceso. Con estos datos, estarás listo para realizar peticiones a la API.
¿Cómo hacer peticiones a la API desde una función asíncrona en Next.js?
Una vez configurada tu aplicación de Shopify, necesitas integrar la obtención de datos a través de peticiones HTTP asíncronas. Aquí es donde entran en juego las ventajas de Next.js y sus React Server Components.
Crear y ejecutar una función asíncrona
Dentro de tu aplicación, crearás una función asíncrona para obtener los productos:
constproducts=async()=>{const response =awaitfetch(`${process.env.SHOPIFY_HOSTNAME}/admin/api/2023/products.json`,{headers:{"x-Shopify-Access-Token": process.env.API_KEY||''}});const data =await response.json();return data;};
Define el hostname de tu tienda y usa el header requerido con el token de acceso.
Captura la respuesta y transfórmala en un objeto JSON, el cual retornas para su uso en la aplicación.
Utilizar valores predeterminados y manejo de errores
Asegúrate de que tus variables de entorno estén configuradas correctamente y utiliza un valor predeterminado para prevenir fallos en la ejecución. Esto mejora la robustez de la función y la manejo de errores.
Desplegar y verificar los datos
Una vez desarrollada la función asíncrona, ejecuta tu aplicación en el entorno de desarrollo de Next.js para verificar que las peticiones y los datos se procesan correctamente. Puedes usar console.log para observar la naturaleza de las respuestas en tiempo real.
¿Qué debes recordar sobre la sincronización en Next.js?
El uso de funciones asíncronas en componentes de React no es estándar. Sin embargo, Next.js al utilizar React Server Components, ofrece capacidades únicas que permiten la obtención de datos directamente desde el servidor en estos componentes.
En aplicaciones tradicionales de React, las peticiones asíncronas suelen gestionarse en el cliente usando patrones como useEffect o herramientas como React Query.
El enfoque de Next.js ofrece una solución eficiente para las peticiones en el servidor, facilitando el desarrollo de aplicaciones robustas.
Este meticuloso proceso de configuración y consumo de la API de Shopify se convierte en una habilidad valiosa y esencial para todo desarrollador interesado en el comercio electrónico. ¡Sigue aprendiendo y explorando las maravillas del desarrollo web!
Usando la extensión para VS Code llamada RapidApi, hice una prueba de si la api de shopify funciona:
Además que me permitió crear una interfaz para los datos de la api y así manipular más fácilmente los datos de los productos
si les ocurre este error al hacer fetching de datos:
Agregenle al fetch https://
Y listo
Gracias
Gracias! y quitenló por si lo pusieron en el .env xD
Bueno, tuve varios errores, pero lo logré corregir. Primero, si coloco las variables de entorno en .env no me lo leía, entonces tuve que crear .env.local.
Luego, en .env.local no puedes colocar el https://
Y luego, en MainProducts, sí debes colocar el https://
Gracias por compartir la solución!
Tengo un error de unexpected token < te salió ese también? u.u
Tips para esta clase:
la url de tu tienda la puedes ver desde admin.shopify en configuraciones, arriba izquierda
No olvides poner el https:// en el host de tu tienda en los .env
recuerda que el componente page, padre en la landing page, pusiste un "use client", deberas quitarlo para que funcione
Este proceso ya aparece deprecated para el 1o de octubre de 2024 :(
¿En qué casos se deberia consumir APIs en SSR components y en qué casos en CSR components? en clases anteriores se sugirio usar client components para consumo de APIs y componentes altamente interactivos, pero ¿cuál seria una directriz más precisa a la hora de tomar esta decisión?
Por lo general y por lo que he podido investigar, las llamadas desde SSR components suelen hacerse cuando trabajas con datos sensibles como cabeceras de autenticación y cuando los datos que devuelve el API quieres que sean visibles para el SEO.
Si los datos deben actualizarse en tiempo real o responder a la interacción del usuario mejor con CSR components. Formularios, reactividad a botones... También en casos de datos que no necesitemos en el primer renderizado de la página y que puedan venir de lazy loading.
Tengo un problema, next js está haciendo una ráfaga de llamadas a la api y no carga la variable de entorno, estoy usando next js 15, alguien le ha pasado ?
Parece que la información que brindan en este curso ha quedado obsoleta. estoy desde ayer intentando hacerlo como indica en la documentación pero no logré hacerlo funcionar
Es una mamera cuando los cursos de Platzi tienen errores. Tengo ya todo el código montado y todo está bien, pero me aparece este error y simplemente quedé bloqueado. Alguien me puede ayudar???
el archivo .env se recomienda que sea .env.local o almenos es lo que dice la documentacion de next.js y ese problema es porque tienes que poner el archivo .env.local o .env dependiendo de como lo llamaste, al mismo nivel de node_modules, osea afuera de la carpeta src
espero que eso solucione tu problema
en este link podran encontrar la documentacion tanto para API REST y GraphQL, se recomienda el uso de graphql, el reto es seguir el paso del curso sin importar el uso de nextjs 14 o 16 como es mi caso, animo !
Por las dudas le puede servir a alguien, me esta trayendo todo bien siempre y cuando usen la misma version de nextjs "14.0.1" y llamando a la api de la misma forma que llama en el video.
Confirmo, Use la version de Next 14.2.32 y me funciona lo que veo en el curso.
E incluso estoy usando el API de Shopify (a pesar que esta deprecated)
1:17 se te olvidó censurar ese correo jajaja
Logré solucionarlo, tuve que especificar que el método era un GET.
En mi caso la versión del API de Shopify es 2024-01 y el ID de la colección (la que consume la home page) era diferente, así que creé 2 variables de entorno adicionales para esto, quedándome el .env así:
SHOPIFY_HOSTNAME="HOST_SHOPIFY"SHOPIFY_API_KEY="API_KEY_SHOPIFY"CACHE_TOKEN=""WEBHOOK_VERSION='API_VERSION'HOME_PAGE_COLLECTION='HOME_PAGE_COLLECTION' ``# Provided at Shopify store
Podrías explicar un poco más porfa? Estoy usando la misma versión y tengo un error de unexpected token "<"
Actualmente estoy usando la última version de NextJS v15 y la api de shopify /admin/api/2025-07/products.json
No se olviden agregar el https:// a su url, ese fue mi error.
Osea que no es obligatorio hacer peticiones Graph QL a la Storefront API?
La API Storefront de Shopify permite crear carritos de compra, acceder a checkouts y manejar información de usuarios a través de diferentes queries y mutations con GraphQL.
Osea que no es necesario el uso de useEffect?
El useEffect solo para componentes renderizados desde el cliente.
Dejo por acá la interfaz para mapear la respuesta del endpoint de productos