如何在Node.js中为ExpressJS路由URL设置正则表达式

如何在Node.js中为ExpressJS路由URL设置正则表达式

ExpressJS路由器 是一个类,用作中间件,用于处理路由或确定应用程序如何响应客户端对特定URI的各种HTTP方法的请求。

创建Express应用程序和安装模块:

步骤1: 使用以下命令创建 package.json 文件:

npm init

步骤2: 你可以访问链接 安装 Express 来了解如何安装 express 模块。你可以使用以下命令安装这个软件包:

npm install express

步骤3:view 文件夹中创建 app.jsparams.jsroutes.js 文件。项目目录将如下所示:

如何在Node.js中为ExpressJS路由URL设置正则表达式

设置URL中的正则表达式:

我们可以通过以下两点轻松地为我们的Express Router设置正则表达式:

  • 要使我们的路由与特定的正则表达式匹配,我们可以将正则表达式放在两个斜杠之间,如下所示: / <routeRegex>/
  • 由于每个路由都包含 / ,所以在正则表达式中使用 / 时,在它前面加上反斜杠 \/

示例: 在以下代码中,我们设置了正则表达式,当收到HTTP GET请求到路由 /home 时,将向客户端呈现一个名为Homepage的响应。

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

现在创建一个 routes.js 文件,其中使用正则表达式为不同的路由创建不同的请求。

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;

设置URL参数中的正则表达式

要设置URL参数的正则表达式,我们可以在参数名称后面的括号内提供正则表达式。在下面的文件中,我们已经为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"); 
})

运行应用程序的步骤: 使用以下命令运行 app.js 文件。

node app.js

输出:

  • 显示在 routes.js 文件中定义的所有路由的功能。

如何在Node.js中为ExpressJS路由URL设置正则表达式

  • 展示在 params.js 文件中定义的路由的功能。

如何在Node.js中为ExpressJS路由URL设置正则表达式

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程