app.get 有多个参数 - 例如app.get('/', requireAuth, (req, res) => { })
app.get with multiple arguments - e.g. app.get('/', requireAuth, (req, res) => { })
我想知道当您在 app.get 中指定多个参数时 express.js 是如何工作的,例如:
app.get('/', requireAuth, (req, res) => { })
在这里,我相信您将斜杠“/”作为路由,并将 (req, res) 作为回调函数的参数。但也有用于授权的 'requireAuth' 部分。但是在文档中,我没有找到关于我们现在使用 'requireAuth' 的方式的多个参数的任何内容。它确实提到您可以使用函数数组,但此处未使用 (https://expressjs.com/en/guide/routing.html)。它是如何工作的?
P.S。 'requireAuth'代码供参考:
module.exports = (req, res, next) => {
const { authorization } = req.headers;
// authorization === 'Bearer laksjdflaksdjasdfklj'
if (!authorization) {
return res.status(401).send({ error: 'You must be logged in.' });
}
const token = authorization.replace('Bearer ', '');
jwt.verify(token, 'MY_SECRET_KEY', async (err, payload) => {
if (err) {
return res.status(401).send({ error: 'You must be logged in.' });
}
const { userId } = payload;
const user = await User.findById(userId);
req.user = user;
next();
});
};
所有参数都是您在实际路由逻辑 运行(对于单个路由)之前调用的简单中间件函数。只要每个中间件函数中有 next 处理,链就会 运行 直到你的路由逻辑,然后在没有处理 next 的地方退出。
这就是快递的魔力。您可以用它做很多事情,例如错误处理、处理不同的内容类型等。
我想知道当您在 app.get 中指定多个参数时 express.js 是如何工作的,例如:
app.get('/', requireAuth, (req, res) => { })
在这里,我相信您将斜杠“/”作为路由,并将 (req, res) 作为回调函数的参数。但也有用于授权的 'requireAuth' 部分。但是在文档中,我没有找到关于我们现在使用 'requireAuth' 的方式的多个参数的任何内容。它确实提到您可以使用函数数组,但此处未使用 (https://expressjs.com/en/guide/routing.html)。它是如何工作的?
P.S。 'requireAuth'代码供参考:
module.exports = (req, res, next) => {
const { authorization } = req.headers;
// authorization === 'Bearer laksjdflaksdjasdfklj'
if (!authorization) {
return res.status(401).send({ error: 'You must be logged in.' });
}
const token = authorization.replace('Bearer ', '');
jwt.verify(token, 'MY_SECRET_KEY', async (err, payload) => {
if (err) {
return res.status(401).send({ error: 'You must be logged in.' });
}
const { userId } = payload;
const user = await User.findById(userId);
req.user = user;
next();
});
};
所有参数都是您在实际路由逻辑 运行(对于单个路由)之前调用的简单中间件函数。只要每个中间件函数中有 next 处理,链就会 运行 直到你的路由逻辑,然后在没有处理 next 的地方退出。
这就是快递的魔力。您可以用它做很多事情,例如错误处理、处理不同的内容类型等。