Tengo un proyecto NextJS con backend express que requiere algunos datos en getServerSideProps .
El problema es await fetch('/api/anyApi') no funciona con la ruta relativa y las llamadas a la ruta absoluta await fetch('${config.OPTION_HOST}/api/anyApi' están siendo bloqueadas por algún tipo de protección en la máquina host .
En su lugar, deseo solucionar este problema y solo usar rutas absolutas, pero me han dicho que eso no es posible en este momento, así que necesito volver a escribir getServerSideProps en todas partes para no usar fetch .
La mejor solución que pude encontrar sin reescribir una gran parte de la lógica de back-end fue usar simulacros como en this anwser .
Entonces, en lugar de const result = await fetch('/api/menu/${context.locale}') , terminé con este código:
export async function getServerSideProps(context) { const categoryController = require('../../../server/controllers/category') var MockExpressRequest = require('mock-express-request'); var MockExpressResponse = require('mock-express-response'); var requestMenu = new MockExpressRequest( { params: { locale: context.locale, } }) var responseMenu = new MockExpressResponse(); await categoryController.getCategories(requestMenu, responseMenu); const result = responseMenu ...rest of getServerSideProps... }Soy nuevo en la programación y aunque esta solución funciona, tengo la sensación de que usar una biblioteca para probar el código de producción podría ser una mala idea. ¿Qué piensas?
Podría usar AXIOS en su lugar: https://www.npmjs.com/package/axios
Puede encontrar toda la documentación de AXIOS aquí: https://axios-http.com/