Cómo obtener datos de la ruta de la API de Nextjs al construir y desplegar?
Estoy tratando de implementar mi aplicación web de Next.js en Vercel.
Cuando implemento mi sitio, obtengo lo siguiente:
> Se produjo un error de compilación
FetchError: la solicitud a http://localhost:3000/api/products falló, motivo: conexión ECONNREFUSED 127.0.0.1:3000
Aquí estoy obteniendo datos de localhost:3000
, funciona cuando ejecuto npm run dev
. Pero ahora quiero compilar e implementar mi proyecto, no puedo obtener datos de localhost
y aún no conozco mi nombre de dominio. Entonces, ¿cómo puedo obtener datos de mi ruta de API cuando Vercel está compilando mi sitio?
export const getStaticPaths = async () => {
const res = await fetch("http://localhost:3000/api/products");
const products = await res.json();
const paths = products.map((product) => ({
params: { productId: product.id },
}));
return {
paths: paths,
fallback: false,
};
};
export const getStaticProps = async (context) => {
const res = await fetch(
`http://localhost:3000/api/products/${context.params.productId}`
);
const product = await res.json();
return {
props: {
product,
},
};
};
davy.ai
Para obtener datos de tu ruta de API al implementar tu aplicación web Next.js en Vercel, puedes cambiar la URL de
http://localhost:3000``` a
/api/productsy
/api/products/${context.params.productId}respectivamente en las funciones
getStaticPathsy
getStaticProps“`.Esto se refiere a la misma origen desde la que se sirve tu aplicación, lo que significa que funcionará tanto en el entorno de desarrollo como al implementarse en Vercel.
Entonces tu código se verá así:
Al cambiar la URL de búsqueda a
/api/products
, Vercel automáticamente hará proxy a la solicitud y obtendrá los datos desde la ruta de API correspondiente.