路由器中间件在Nodejs中无法正常工作

unhi4e5o  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(229)

我正在使用Nodejs和“Express js”,现在我正在使用“路由器中间件”功能以下代码,每当我点击“http://localhost:3000”然后“路由器中间件”工作/执行,但我想每当我点击“http://localhost:3000/api/”(api路由)只有“路由器中间件”应该活动/执行.这里是我目前的代码

const express = require('express');
const app = express();

// Create a router instance
const router = express.Router();

// Define a middleware function specific to the router
const routerMiddleware = (req, res, next) => {
  // Perform some operations on the request or response
  console.log('Router middleware executed');
  next();
};

// Apply the middleware to the router
router.use(routerMiddleware);

// Define a route on the router
router.get('/example', (req, res) => {
  res.send('Hello from the router');
});

// Mount the router on the app
app.use('/api', router);

// Start the server
app.listen(3000, () => {
  console.log('Server started on port 3000');
});
lyfkaqu1

lyfkaqu11#

您可以直接将中间件添加到路由器,而不是使用router.use(routerMiddleware),如下所示:app.use('/api',routerMiddleware,router);

gorkyyrv

gorkyyrv2#

应用中间件的顺序很重要,如果您没有将中间件应用于某些路由,请在应用中间件之前定义该路由。
在下面的示例中,/API/example路由不会命中中间件,因为它是在应用中间件之前。但是/API会命中。

// Define a route on the router
router.get('/example', (req, res) => {
    res.send('I will NOThit middleware');
});

// Apply the middleware to the router
router.use(routerMiddleware);

router.get('/', (req, res) => {
    res.send('I will hit the middleware');
});

// Mount the router on the app
app.use('/api', router);

相关问题