Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
Express.js: anteponga la subruta a todas las rutas definidas

Digamos que tengo una aplicación Express definida en un archivo, digamos server.js así:

 const app = express(); app.use('/foo', foo); app.use('/bar', bar); module.exports = app;

Importo esta aplicación Express en otro archivo, digamos index.js :

 const app = require('./server'); const port = process.env.PORT || 3000; const listen = (port) => { app.listen(port, () => { console.log(`Backend listening on port ${port}!`); }); }; listen(port);

Ahora, las rutas que están disponibles para esta aplicación son /foo y /bar .

¿Hay alguna forma de editar la configuración en el archivo index.js para que las rutas se conviertan en /api/foo y /api/bar ? Sin tocar el archivo server.js .

Caso de uso:

Tengo una aplicación Nuxt.js con un backend que se carga en la aplicación Nuxt a través de la propiedad serverMiddleware en nuxt.config.js así:

 serverMiddleware: [ ... { path: '/api', handler: '~/server.js' }, ],

Esto tiene un efecto similar al que describí anteriormente: importa la aplicación express de la aplicación server.js y antepone todas sus rutas con /api .

Sin embargo, a menudo no quiero desarrollar la parte frontal de la aplicación Nuxt , solo quiero hacer cambios en el backend. Para este propósito, tengo un archivo de ayuda como index.js arriba, que se ejecuta solo en el backend. (Frontend a menudo toma mucho tiempo para compilar, es por eso que no quiero compilarlo cuando no lo necesito).

Esto crea el problema de que todas las rutas son ligeramente diferentes: carecen de /api al principio. Las rutas se están utilizando en diferentes herramientas como Postman, etc. y de repente no funcionaban.

Mi solución actual es definir el archivo index.js de la misma manera que el archivo server.js con todas las rutas definidas como las quiero, en lugar de app.use('/foo', foo); hay app.use('/api/foo', foo); etc. pero esto tiene sus propios problemas, por ejemplo, si cambio server.js , tengo que cambiar index.js . Busco algo más elegante.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

De acuerdo con los documentos express 4.0 https://expressjs.com/en/4x/api.html#app.use , puede usar una instancia de application de la misma manera que lo haría con un router . En resumen, simplemente use la exportación de su server.js como un middleware en la ruta en la que desea insertarlo, en lugar de llamar directamente a .listen() en él.

Aquí hay un código de demostración que funcionó para mí:

 const express = require('express'); const app_inner = express(); app_inner.use('/foo', (req,res) => res.send('foo')); const app_outer = express(); app_outer.use('/foo2', app_inner); app_outer.listen(9999); // web browser at localhost:9999/foo2/foo returns 'foo' as expected
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda