为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2021-11-25 19:08:28
我在 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.' })})
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

要为所有路由调用中间件,只需app.use(yourMiddleware)在定义任何路由之前执行。


要让中间件调用一组路由,而不是其他路由,请将您希望中间件调用的所有路由放在具有仅匹配路由子集的路径前缀的特定路由器上。然后在定义任何路由之前在该路由器上执行中间件。


这是第二个选项的示例:


const express = require('express');

const app = express();


// load and configure api router

app.use('/api', require('./apiRouter.js'));


app.listen(...);

然后,在 apiRouter.js 中:


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


// middleware that is called for all api routes

router.use(myMiddleware);


// define api routes here

router.get('/list', ...)


module.exports = router;


查看完整回答
反对 回复 2021-11-25
?
长风秋雁

TA贡献1757条经验 获得超7个赞

router.use()为特定路由器服务的路由挂载中间件。


router.use(checkToken)

router.get('/health', getHandler)

router.post('/', postHandler)

module.exports = router


查看完整回答
反对 回复 2021-11-25
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信