📜  Express.js | router.use()函数(1)

📅  最后修改于: 2023-12-03 15:30:41.602000             🧑  作者: Mango

Express.js | router.use()函数

在使用Express.js框架进行Web应用程序开发时,使用router.use()函数是经常用到的一个方法。它可以在路由器中的所有路由中添加中间件,以便对请求进行预处理。

语法
router.use([path], callback)
  • path: 可选参数,表示在某个URL路径上应用中间件。若不提供,则所有请求均会应用中间件;
  • callback: 表示将要被调用的中间件函数。
说明

router.use()函数可以允许我们在所有路由中应用中间件,在处理请求之前先处理中间件中的逻辑代码。这个函数也允许我们在应用的某部分URL上应用中间件函数,以便我们可以在只有某些请求时才执行中间件。这样就给了我们很大灵活性。

多个中间件

你也可以使用多个回调函数来处理请求(记得指定 next 对象)。这些回调函数可以直接调用 next('route') 方法,以绕过剩下的路由回调。 在下面的例子中,如果用户访问根路径,则显示一个消息,否则转到下一个路由。

router.use('/', function (req, res, next) {
  console.log('Request URL:', req.originalUrl)
  next()
}, function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
})
路径参数

你可以为路径参数指定正则表达式,此时只会匹配符合指定正则表达式的路由。例子如下:

router.use('/:id([0-9]{5})', function (req, res, next) {
  console.log('ID:', req.params.id)
  next()
})
指定路径与路由

在实际开发中,我们经常需要将路由分为不同的模块来开发,这时就需要指定路径与路由的方法。

var birds = require('./birds')
...
// 将路由 '/birds' 挂载到应用中
app.use('/birds', birds)
示例

下面是一个使用router.use()函数的简单示例。当访问‘/’路径时,将响应“Hello from Middleware!”字符串。

const express = require('express');
const app = express();
const router = express.Router();

router.use('/', (req, res, next) => {
  console.log('Middleware in use');
  next();
});

router.get('/', (req, res) => {
  res.send('Hello from Middleware!');
});

app.use('/', router);

app.listen(3000, () => {
  console.log('Server started on port 3000!');
});
参考