¿Cómo configurar Regex para la URL del enrutador ExpressJS en Node.js?

ExpressJS Router es una clase que actúa como un middleware para proporcionar el manejo de rutas o determinar cómo responde una aplicación a las requests de un cliente, de varios métodos HTTP, a un URI en particular.

Creación de la aplicación Express e instalación del módulo:

Paso 1: Cree package.json usando el siguiente comando:

npm init

Paso 2: Puede visitar el enlace Instalar Express para ver cómo instalar el módulo express. Puede instalar este paquete usando el comando:

npm install express

Paso 3: Cree archivos app.js , params.js y route.js en la carpeta de vista . El directorio del proyecto se verá así:

Estructura del proyecto

Configurar Regex en URL:

Podemos configurar Regex fácilmente para nuestro Express Router siguiendo estos dos puntos:  

  • Para hacer que nuestra ruta coincida con una expresión regular en particular, podemos colocar expresiones regulares entre dos barras diagonales como esta /<routeRegex>/
  • Dado que cada ruta contiene / , siempre que tengamos que usar / dentro de Regex, use una barra invertida \ / antes.

Ejemplo: en el siguiente código, estamos configurando expresiones regulares, porque cuando se recibe una solicitud de obtención de HTTP para enrutar /home , se muestra una página de inicio de respuesta al cliente. 

router.get(/\/home/ , (req,res)=>{
    res.send('Homepage');
)

Ahora cree un archivo route.js que contendrá diferentes requests para diferentes rutas usando Regex. 

routes.js

// Requiring module
const express = require('express');
const router = express.Router();
  
// Route which matches /abc or /adc
router.get(/\/a[b|d]c/, (req, res) => {
    res.send("<h1>Route First</h1");
})
  
// Routes that matches /a(any single digit)/ 
// followed by 2 times c or 3 times c or
// /a(any single digit) / followed by 2 
// times c or 3 times c
router.get(/\/a[0-9]\/c{2,3}/, (req, res) => {
    res.send("<h1>Route Second</h1");
})
  
// Routes that ends with /Hello followed by 
// a letter in [a-z] any no. of times and 
// ends with "OK" 
router.get(/^\/Hello[a-z]*OK$/, (req, res) => {
    res.send('<h1>Route Third</h1>')
})
  
// Routes that must end with string "Hello" 
// and can have any no. of any character 
// before that
router.get(/\/*Hello$/, (req, res) => {
    res.send('<h1>Route Fourth</h1>')
})
  
module.exports = router;

Configuración de Regex en parámetros de URL:

Para configurar Regex para parámetros de URL, podemos proporcionar expresiones regulares entre paréntesis justo después del nombre de los parámetros. En el siguiente archivo, hemos implementado Regex para parámetros de URL.

params.js

// Requiring module
const express = require('express');
const router = express.Router();
  
// Setting up regex for name and contact parameters
router.get('/user/:name([a-zA-Z]+)/:contact([6-9][0-9]{9})', (req, res) => {
    const name = req.params.name;
    const contact = req.params.contact;
    res.send({
        "username": name,
        "contact": contact
    })
})
  
module.exports = router;

app.js

// Requiring modules
const express = require('express');
  
const app = express();
const router = express.Router();
  
const route = require('./routes');
const param = require('./params');
  
// Using routers as middleware to
// use route.js and params.js
app.use('/', route);
app.use('/', param);
  
// Starting server on port 8000
app.listen(8000, () => {
    console.log("Server is listening on port 8000");
})

Paso para ejecutar la aplicación: Ejecute el archivo app.js usando el siguiente comando.

node app.js

Producción: 

  • Mostrando el funcionamiento de todas las rutas definidas en el archivo route.js .

Ejecución de rutas.js

  • Mostrando el funcionamiento de las rutas definidas en el archivo params.js .

Ejecución de params.js

Publicación traducida automáticamente

Artículo escrito por localhost3000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *