Los frameworks web proporcionan recursos como páginas HTML, scripts, imágenes, etc. en diferentes rutas.
La siguiente función se utiliza para definir rutas en una aplicación Express –
app.method(path, handler)
Este MÉTODO se puede aplicar a cualquiera de los verbos HTTP – get, set, put, delete. También existe un método alternativo que se ejecuta independientemente del tipo de petición.
La ruta es la ruta en la que se ejecutará la petición.
El handler es una función de callback que se ejecuta cuando se encuentra un tipo de petición que coincide con la ruta correspondiente. Por ejemplo,
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.listen(3000);
Si ejecutamos nuestra aplicación y nos dirigimos a localhost:3000/hello, el servidor recibe una petición get en la ruta «/hello», nuestra app Express ejecuta la función callback adjunta a esta ruta y envía «Hello World!» como respuesta.
También podemos tener varios métodos diferentes en la misma ruta. Por ejemplo,
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.post('/hello', function(req, res){ res.send("You just called the post method at '/hello'!\n");});app.listen(3000);
Para probar esta petición, abre tu terminal y utiliza cURL para ejecutar la siguiente petición –
curl -X POST "http://localhost:3000/hello"
Un método especial, all, es proporcionado por Express para manejar todos los tipos de métodos http en una ruta particular usando la misma función. Para utilizar este método, prueba lo siguiente.
app.all('/test', function(req, res){ res.send("HTTP method doesn't have any effect on this route!");});
Este método se utiliza generalmente para definir middleware, del que hablaremos en el capítulo de middleware.
Rutas
Definir rutas como las anteriores es muy tedioso de mantener. Para separar las rutas de nuestro archivo principal index.js, utilizaremos Express.Router. Crea un nuevo archivo llamado things.js y escribe lo siguiente en él.
var express = require('express');var router = express.Router();router.get('/', function(req, res){ res.send('GET route on things.');});router.post('/', function(req, res){ res.send('POST route on things.');});//export this router to use in our index.jsmodule.exports = router;
Ahora para usar este router en nuestro index.js, escribe lo siguiente antes de la llamada a la función app.listen.
var express = require('Express');var app = express();var things = require('./things.js');//both index.js and things.js should be in same directoryapp.use('/things', things);app.listen(3000);
La llamada a la función app.use en la ruta ‘/things’ adjunta el router things con esta ruta. Ahora cualquier petición que nuestra app reciba en ‘/things’, será manejada por nuestro router things.js. La ruta ‘/’ en things.js es en realidad una subruta de ‘/things’. Visita localhost:3000/things/ y verás la siguiente salida.
Los routers son muy útiles para separar las preocupaciones y mantener juntas las partes relevantes de nuestro código. Ayudan a construir un código mantenible. Debes definir tus rutas relacionadas con una entidad en un solo archivo e incluirlo usando el método anterior en tu archivo index.js.