Unión URI Express.js
Frecuentes
Visto 592 equipos
0
Hola, quiero vincular el URI de mi aplicación, por ejemplo, imaginemos este escenario.
Estoy ejecutando la aplicación express en el puerto 3000, nginx en el puerto 80, solicitudes de proxy de URI api
al puerto 3000
Y tener esta ruta en expreso
// Home
app.get('/', function(req, res) {
res.send('Hello!');
});
Si intento acceder desde localhost: 3000 yo obtengo Hello!
en mi navegador (eso es de esperar),
pero si trato de acceder desde localhost/api obtendré un error, por supuesto que no puede encontrar la ruta a la que estoy tratando de acceder.
Si cambio app.get a app.get('/api/...
funciona como se esperaba, pero esto no es lo que quiero... Tendría que anteponer api
en cada ruta, debe haber otra forma de hacer esto, algo como:
- Unión URI
- ¿filtro URI?
Leí la documentación pero no puedo encontrar nada para resolver mi problema, y estoy pensando en hacer un paquete que haga enlaces de URI en express para resolver este problema.
1 Respuestas
1
Mira mi respuesta aquí para una solución que le permite apuntar cada solicitud que coincida con un líder /api
a una aplicación express en particular. En el caso vinculado, el usuario quería hacer algunas cosas sin el fragmento principal. Podrías dejar de lado el app.use(app.router)
para la aplicación express principal ya que solo te preocupas por el /api/
rutas.
<snip>
var http = require('http');
var express = require('express');
var desktopApp = express();
var mobileApp = require('./mobile.js');
desktopApp.use('/mobile', mobileApp)
desktopApp.use(desktopApp.router);
</snip>
También estoy bastante seguro de que en realidad puedes reescribir request.url
tú mismo. ¡Nunca he probado esto, así que no puedo prometer que funcione! ver documentos http://expressjs.com/4x/api.html#req.originalUrl También asegúrese de poner esto en la parte superior de sus funciones de enrutamiento, para que se ejecute antes que cualquier ruta posterior.
app.all('*', function(req, res, next){
req.url = req.url.replace(/^\/api/, '');
//the regex replaces leading /api with empty string
//req.originalUrl will keep the old url
next();
});
contestado el 23 de mayo de 17 a las 13:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas node.js express or haz tu propia pregunta.