Express 4 problema request HEAD / response GET

15 views
Skip to first unread message

Orlando Sergio Dominguez

unread,
Jul 1, 2015, 10:53:37 AM7/1/15
to node...@googlegroups.com
Hola a todos me llamo Sergio desde hace poco comencé a trabajar
con nodejs en especial con express js 4 y me parece una maravilla, estoy
sorprendido por su velocidad hasta que ayer me surgió algo y no entiendo
donde esta el problema de mi implementación, a ver si alguien me puede ayudar.

Escenario:

En app.js tengo definido los ruteadores:

app.use('/',index);
app.use('/login',login);

En el ruteador index tengo definido:

router.get('/',controladorIndex.paginaIndex);
router.head('/',controladorIndex.cabecerasIndex);
router.get('/:string',controladorIndex.paginaDos);

en el ruteador login tengo definido:

router head('/',controladorLogin.cabecerasLogin);

Problema:
Si ejecuto curl -v -X HEAD http://localhost:3000/login
express y node responde con el contenido de router.get('/:string',controladorIndex.paginaDos);

Primera incógnita: ¿Poqué express no utiliza el ruteador login?
Segunda incognita (y más interesante): ¿Porque express responde un response GET si le estoy enviando una petición request HEAD?

DiegoUG

unread,
Jul 1, 2015, 11:22:22 AM7/1/15
to nodejs-es
mmmm no se bien, buscando un poco en google encontré algo, que no se si responda tu pregunta:


Note the case that there is a GET route but no HEAD route, HEAD requests will be handled by the GET route.
router.at('/', 'GET', function () {
  // handles both GET and HEAD requests, but in in the HEAD case res.write 
  //  won't write anything. 
});
 
// Please note that the POST route stil works 
You can also set multply routes at once useing an object:
router.at('/', {
  'HEAD': function () { },
  'GET': function () { },
  'POST': function () { }
});
// Please note this will overwrite the previouse set GET and HEAD routes and 
//  because there now is a HEAD route, it won't be handled by the GET route. 

--
Has recibido este mensaje porque estás suscrito al grupo "NodeJS ES" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a nodejs-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
  Diego Alonso Uribe Gamez

Desarrollador web

Twitter: @DiegoUG

Google+: +DiegoAlonsoUribeGamez



DiegoUG

unread,
Jul 1, 2015, 11:30:51 AM7/1/15
to nodejs-es
pon tu routher de HEAD por encina del de GET.

Gustavo Machado

unread,
Jul 1, 2015, 11:42:17 AM7/1/15
to node...@googlegroups.com
Hola Sergio,

Algunos comentarios:

- En login, estas usando '/' y creo que estas tratando de usar '/login'.
- En index estas routeando '/:string', esto va a match-ear '/login'.
- Es posible que te responda el GET por no haber una ruta con HEAD que matchee (https://github.com/strongloop/express/blob/master/lib/router/route.js#L65)

Esto deberia resolver tu problema:

router.head('/login',controladorLogin.cabecerasLogin);

Y ponelo antes de la ruta generica "/:string".

Saludos,
Gus

--

Orlando Sergio Dominguez

unread,
Jul 2, 2015, 7:16:21 AM7/2/15
to node...@googlegroups.com
Diego y Gustavo muchas gracias por sus aportes, es verdad router.get('/:string',
controladorIndex.paginaDos); matchea todas las rutas que están definidas
después de '/', sin importar el método que se use. Me parece que debería tener mas
prioridad el método de la petición, y luego el path pero en fin express funciona
así y hay que adaptarse. Estamos en contacto.

Orlando Sergio Dominguez

unread,
Jul 2, 2015, 7:16:39 AM7/2/15
to node...@googlegroups.com
Diego y Gustavo muchas gracias por sus aportes, es verdad router.get('/:string',
controladorIndex.paginaDos); matchea todas las rutas que están definidas
después de '/', sin importar el método que se use. Me parece que debería tener mas
prioridad el método de la petición, y luego el path pero en fin express funciona
así y hay que adaptarse. Estamos en contacto.


El miércoles, 1 de julio de 2015, 11:53:37 (UTC-3), Orlando Sergio Dominguez escribió:
Reply all
Reply to author
Forward
0 new messages