Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
¿Llamar a un punto final dentro del propio proyecto de nodo?

Estoy creando una aplicación MERN que agrega metaetiquetas a las páginas de React sin SSR. Entonces, necesito leer la consulta dentro del archivo principal del servidor y pasar el contenido de metadatos apropiado a cada página. Estoy usando esto en el archivo server.js:

 const indexPath = path.resolve(__dirname, 'build', 'index.html'); // static resources should just be served as they are app.use(express.static( path.resolve(__dirname, 'build'), { maxAge: '30d' }, )); // here we serve the index.html page app.get('/*', (req, res, next) => { fs.readFile(indexPath, 'utf8', (err, htmlData) => { if (err) { console.error('Error during file reading', err); return res.status(404).end() } // get post info const postId = req.query.id; const post = getPostById(postId); if(!post) return res.status(404).send("Post not found"); // inject meta tags htmlData = htmlData.replace( "<title>React App</title>", `<title>${post.title}</title>` ) .replace('__META_OG_TITLE__', post.title) .replace('__META_OG_DESCRIPTION__', post.description) .replace('__META_DESCRIPTION__', post.description) .replace('__META_OG_IMAGE__', post.thumbnail) return res.send(htmlData); }); });

Aquí getPostById se define estáticamente en un archivo. Pero quiero recuperarlo de mi db. Mi estructura de archivos es:

 server.js controllers - posts.js routes - posts.js

He separado la lógica de la ruta. Así que mi archivo route/posts.js se ve así:

 import { getPost, createPost } from '../controllers/posts.js'; const router = express.Router(); router.get('/', getPost); router.post('/', createPost); export default router;

Entonces, para pasar dinámicamente el metacontenido, necesito leer el punto final de la API para cada solicitud y pasar los datos apropiados. Para esto, necesito llamar a los puntos finales directamente dentro de mi proyecto de nodo. ¿Como hacer eso?

Agradecería cualquier ayuda. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si realmente desea llamar a sus propios puntos finales http, usaría http.get() o alguna biblioteca http de nivel superior (que es un poco más fácil de usar) como got() . Y luego puede hacer una solicitud http a su propio servidor y recuperar los resultados.

Pero... por lo general, no realiza solicitudes http a su propio servidor. En su lugar, encapsula la funcionalidad que obtiene los datos que desea en una función y usa esa función tanto en la ruta como en su propio código que desea los mismos datos que la ruta. Esto es mucho más eficiente que empaquetar una solicitud http, enviar esa solicitud a la pila TCP, hacer que esa solicitud regrese a su servidor, analizar esa solicitud, obtener los datos, formarla como una respuesta http, enviar esa respuesta de vuelta a el solicitante, analizando esa respuesta y luego usando los datos.

En cambio, si tiene una función compartida común, simplemente llame a la función, obtenga el resultado (probablemente a través de una promesa) y listo. No necesita todo ese paquete intermedio en la solicitud/respuesta http, análisis, red de bucle invertido, etc.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda