2012-10-04 10 views
19

Estoy buscando alguna documentación sobre la función app.get de express.js.Express app.get documentation

app.get(
    '/path', 
    middleware(), 
    function(req, res) { 
     res.redirect('/'); 
    } 
); 

El ejemplo anterior toma tres parámetros. Los documentos normales solo muestran dos. Me interesa lo que hace este paraméte central y cómo usarlo.

+3

puede apilar funciones de middleware: app.get ('/ account', fn1, fn2, fn3, function (err, req, res) {}); – chovy

+1

@chovy thx para esa respuesta simple. Feliz año nuevo 2015! –

Respuesta

23

Los documentos que forman parte de app.METHODdocumentation, donde get es uno de los métodos HTTP admitidos.

El segundo parámetro opcional se denomina middleware (y puede pasar una serie de funciones de middleware). Esta es una función que se llama antes de la devolución de llamada del tercer parámetro (el controlador de ruta real) y la responsabilidad de una función de middleware es permitir que su código siga el principio DRY (no se repita).

Ejemplo de funciones de middleware son verificaciones de permisos, validaciones de acceso, validación de sesiones (si el usuario no ha iniciado sesión, llevarlo a una página de inicio de sesión), y tal.

Dado que varias rutas pueden desear el mismo comportamiento, utiliza un middleware para no tener que escribir el mismo código varias veces.

+0

Quiero hacer algunas funciones de middleware pero realmente no puedo encontrar el documento sobre cómo funcionan y qué parámetros toman. Encontré un código de ejemplo que tiene una función que toma 'req, res, next' como argumentos, pero no estoy seguro de cómo usarlo. – ThomasReggi

+1

Las funciones de middleware aquí siempre toman esos tres parámetros: el objeto 'request', el objeto' response', y la devolución de llamada 'next' para llamar cuando se completa el middleware. Pase 'siguiente' a un objeto Error en caso de error, o sin parámetros para pasar el control a la siguiente devolución de llamada. – JohnnyHK

+0

¿Conoces un ejemplo de middleware de otro método, que node/express utiliza para delegar parámetros bajo una ruta? Por ejemplo, route '/ login? Age = 23' from'/login? Name = thomas'? Realmente podría usar un ejemplo de esto. Sé que podría usar un condicional si 'req.query.age' y' req.query.name' en función de si son 'undefined' o no, pero esto no es realmente sofisticado. ¿El middleware es la solución? – ThomasReggi