Промежуточное программное обеспечение Nodejs для конкретных запросов - PullRequest
0 голосов
/ 19 сентября 2018

Я хотел бы иметь промежуточное программное обеспечение для этих маршрутов:

POST /tickets
PUT /tickets/:id
DELETE /tickets/:id
etc...

, но в настоящее время мое промежуточное программное обеспечение выполняется при каждом HTTP-запросе, сделанном в / tickets и т. Д .:

app.use('/tickets', function(req, res, next) {

    var token = req.body.token || req.query.token || req.headers['x-access-token'];

    if (token) {
        jwt.verify(token, app.get('superSecret'), function(err, decoded) {      
            if (err) {
                return res.json({ success: false, message: 'Failed to authenticate token.' });    
            } else {
                req.decoded = decoded;    
                next();
            }
    });
 } else {

      return res.status(403).send({ 
          success: false, 
          message: 'No token provided.' 
    });

    }
});

КакМогу ли я использовать это на конкретные запросы?

1 Ответ

0 голосов
/ 19 сентября 2018

Express имеет методы post / get / delete для маршрутизации.Подробнее в документации

Вы должны написать функцию промежуточного программного обеспечения и повторно использовать ее при маршрутизации.

Пример:

function JWTCheckMiddleware(req, res, next) {
  var token = req.body.token || req.query.token || req.headers['x-access-token'];
  if (token) {
    jwt.verify(token, app.get('superSecret'), function(err, decoded) {
      if (err) {
        return res.json({ success: false, message: 'Failed to authenticate token.' });
      } else {
        req.decoded = decoded;
        next();
      }
    });
  } else {
    return res.status(403).send({
      success: false,
      message: 'No token provided.'
    });
  }
});

app.post('/tickets', JWTCheckMiddleware, function createTicket(req, res) {...});
app.put('/tickets/:id', JWTCheckMiddleware, function updateTicket(req, res) {...});
app.delete('/tickets/:id', JWTCheckMiddleware, function removeTicket(req, res) {...});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...