Rutas en Express
Se refiere a la forma en que la aplicación responde los request enviador por los clientes en un endpoint particular, el cúal tiene una uri y un http request method específico.
Estructura básica
app.METHOD(PATH, HANDLER)
// app: se refiere a la aplicación en express
// method: http method que se utilizará
// path: dirección donde el cliente hace el request
// handler: función la cuál se ejecuta al llegar el request
Http Request
// Http Request
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/', (req, res) => {
res.send('Post request')
})
app.put('/', (req, res) => {
res.send('Put request')
})
app.delete('/', (req, res) => {
res.send('Delete request')
})
All request
// All Request
app.all('/all', (req, res, next) => {
res.send('This is all route')
})
Ejemplo de rutas
// Ejemplos de rutas
app.get('/about', (req, res) => {
res.send('About page')
})
app.get('/gatitos?', (req, res) => {
res.send('Muchos gatitos!')
})
app.get('/grito+', (req, res) => {
res.send('Esto es un gritooooo!')
})
app.get('/hola*chao', (req, res) => {
res.send('hola amigo')
})
app.get('/perrit(os)?(as)?', (req, res) => {
res.send('Es un mamifero')
})
Expresiones regulares
app.get(/mon/, (req, res) => {
res.send('Probablemente es un digimon')
})
Manejo de Rutas
// doble función anidada
app.get('/doblefuncion', (req, res, next) => {
console.log('Verificando usuario...')
next()
}, (req, res) => {
res.send('Información requerida por el usuario')
})
// arreglo de funciones anidadas
var login = (req, res, next) => {
console.log('Verificando usuario...')
next()
}
var validation = (req, res, next) => {
console.log('Validando información...')
next()
}
var send = (req, res, next) => {
res.send('Información requerida por el usuario')
}
app.get('/arreglofuncion', [login, validation, send])
// Mixta
app.get('/mixfuncion', [login, validation], (req, res) => {
res.send('Información requerida por el usuario')
})
Router
using route in main file:
// Router
app.route('/bears')
.get((req, res) => {
res.send('Toma todos los osos.')
})
.post((req, res) => {
res.send('Guardando un oso.')
})
using route in external file
// router.js
var express = require('express');
var router = express.Router();
// Se le entrega una middleware específico para este router
router.use(function timeLog(req, res, next) {
console.log('Algo está pasando...');
next();
});
// Se define el home de esta ruta
router.get('/', function(req, res) {
res.send('Perros Welcome page');
});
// se le agrega una página específica a esta ruta
router.get('/about', function(req, res) {
res.send('Acerca de los perros');
});
module.exports = router;
//index.js
// Se importa el router
var dogs = require('./router.js')
// Se le entrega como handler de la ruta específica
app.use('/dogs', dogs)
Params
// router.js
var express = require('express');
var router = express.Router();
// Se toma el parámetro que ingresa
router.param('user_id', function(req, res, next, id) {
console.log('buscando usuario de parámetro:',id);
console.log('buscando usuario de parámetro:',req.params.user_id)
req.user = {
name: 'Usuario1',
id: id
}
next();
});
router.get('/:user_id', function (req, res) {
res.send('Nombre:' + req.user.name);
});
module.exports = router;
Headers
// Header
app.get('/header1', (req, res) => {
res.append('Content-Type', 'text/plain');
res.send('enviado con headers');
})
app.get('/header2', (req, res) => {
res.set({
'Content-Type': 'application/json'
});
res.json('enviado con headers')
})