Estoy tratando de crear un sitio de comercio electrónico con Next.JS y Strapi. Cada vez que trato de solicitar datos de Strapi a Next.JS, siempre recibo un error: -
FetchError: request to http://localhost:1337/api/products?populate=* failed, reason: connect ECONNREFUSED 127.0.0.1:1337?populate= * en el enlace es para recibir todos los datos y también probé sin él.
Así es como estoy solicitando datos: -
export async function getServerSideProps() { let data = await fetch('http://localhost:1337/api/products?populate=*', { method: 'GET', headers: { 'Authorization': 'Bearer api-token', }, }); let products = await data.json(); return { props: { products }, }; }He leído muchas preguntas similares pero no puedo encontrar nada. He revisado todo muchas veces pero sigue sin funcionar. Sin embargo, cuando realizo la solicitud con el mismo token API usando thunder client , me da un estado: 200 , y también recibo datos en formato JSON sin ningún error. Han pasado horas y todo se ve bien, pero aún no funciona.
En primer lugar, cuando obtiene de su API nextjs, no llama a la URL completa (es decir, 'localhost'), simplemente inicia la llamada con /api/more/params
export async function getServerSideProps() { // next api routes use a proxy under the hood, // so you just need to call `/api/` then the rest of the params :) let data = await fetch('/api/products?populate=*', { method: 'GET', headers: { 'Authorization': 'Bearer api-token', }, }); let products = await data.json(); return { props: { products }, }; } También creo que primero valdrá la pena leer (y probablemente responderá a su pregunta) la documentación en getServerSideProps
Puede ser tentador buscar una ruta API cuando desea obtener datos del servidor y luego llamar a esa ruta API desde getServerSideProps. Este es un enfoque innecesario e ineficiente, ya que hará que se realice una solicitud adicional debido a que tanto getServerSideProps como API Routes se ejecutan en el servidor.
Si bien es posible que esto no resuelva el problema por completo, dada la falta de más detalles, ¡ambas recomendaciones deberían ser un buen comienzo y ayudarnos a resolver esto!