如何自动为我拥有的所有 api 调用我的中间件?

我在 express 中创建了一个发送电子邮件的服务,现在我正在实现一个用于 jwt 身份验证的中间件,它已经在工作,现在我希望这个中间件能够为我拥有的任何 api 或我将创建的任何 api 自动调用


我试图在我的根上做以下分配,checkToken 是我在中间件上的功能


const app = express();

app.use(checkToken, require('./middlewares'))

app.use(`${config.URL_BASE}/email`, require('./apis/email'))

.

.

.

目前调用我正在做的中间件,它的工作非常好


router.post('', middleware.checkToken, async function (req, res) {

  const {

    type: typeCode,

.

.

.

它工作得很好,但我的另一个 api 不调用中间件,我不想再次明确调用


其他接口


router.get('/health', async (req, res) => {

  res.status(200).send({ message: 'Ready.' })

})


HUX布斯
浏览 188回答 2
2回答

BIG阳

要为所有路由调用中间件,只需app.use(yourMiddleware)在定义任何路由之前执行。要让中间件调用一组路由,而不是其他路由,请将您希望中间件调用的所有路由放在具有仅匹配路由子集的路径前缀的特定路由器上。然后在定义任何路由之前在该路由器上执行中间件。这是第二个选项的示例:const express = require('express');const app = express();// load and configure api routerapp.use('/api', require('./apiRouter.js'));app.listen(...);然后,在 apiRouter.js 中:const router = require('express').Router();// middleware that is called for all api routesrouter.use(myMiddleware);// define api routes hererouter.get('/list', ...)module.exports = router;

长风秋雁

router.use()为特定路由器服务的路由挂载中间件。router.use(checkToken)router.get('/health', getHandler)router.post('/', postHandler)module.exports = router
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript