как подключить мидддвар к отдельному роуту?
Миддлвар на чек авторизации
const jwt = require("jsonwebtoken");
const config = require("config");
module.exports = function(req, res, next) {
//get token from header
const token = req.header("x-auth-token");
//check if not token
if (!token) {
return res.status(401).json({ msg: "No token, authorization denied" });
}
try {
const decoded = jwt.verify(token, config.get("jwtSecret"));
req.user = decoded.user;
next();
} catch (error) {
res.status(401).json({ msg: "Token is not valid" });
}
};
роуты
const express = require ( 'express' );
const { getLoggedInUser, authUserAndGetToken } = require ( '../controllers/users' );
const router = express.Router ();
router
.route ( '/' )
.get ( getLoggedInUser )
.post ( authUserAndGetToken );
module.exports = router;
пример
app.get('/example/d', [cb0, cb1], function (req, res, next) {
console.log('the response will be sent by the next function ...');
next();
}, function (req, res) {
res.send('Hello from D!');
});
Ответы (1 шт):
Автор решения: Yugofx
→ Ссылка
Разница вызова метода get на уровне router и route в том, что router.get сначала создает route и потом вызывает на нем метод get. Поэтому, отвечая на ваш вопрос, как передать промежуточные обработчики на конкретный метод, передавайте так, как передавали бы на app.get('/', middlewares, handler), за исключением пути /.
По сути вызовы
router.route('/').get(middlewares, handler)
router.get('/', middlewares, handler)
идентичны. Под капотом вызов метода get создает route и передает первый аргумент в качестве пути (эквивалент первой записи). И потом забирает собственное имя вызванного метода и вызывает аналогичный метод на route, просто передавая middlewares и handler как есть.