如何在Node.js中为ExpressJS路由URL设置正则表达式
ExpressJS路由器 是一个类,用作中间件,用于处理路由或确定应用程序如何响应客户端对特定URI的各种HTTP方法的请求。
创建Express应用程序和安装模块:
步骤1: 使用以下命令创建 package.json 文件:
npm init
步骤2: 你可以访问链接 安装 Express 来了解如何安装 express 模块。你可以使用以下命令安装这个软件包:
npm install express
步骤3: 在 view 文件夹中创建 app.js , params.js 和 routes.js 文件。项目目录将如下所示:
设置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 文件中定义的所有路由的功能。
- 展示在 params.js 文件中定义的路由的功能。