创建执行外部api调用的中间件

时间:2018-08-08 14:52:34

标签: node.js api express request

我正在创建一个中间件,该中间件检查JWT令牌是否有效,为此,它需要调用外部API。如果令牌有效,则应继续常规功能。

这是我写的中间件then未触发):

app.use(function(req, res, next) {
  if (!req.headers.authorization) {
    return res.status(401).json({
      status: 401,
      message: 'Unauthorized Error: Invalid access token.'
    }).end();
  } else {
    requestify
      .request(process.env.SWF_AUTH_INFO, {
        method: 'GET',
        headers: {
          'Accept-Language': 'nl',
          Authorization: req.headers.authorization
        }
      })
      .then(function(response) {
        if (response.body.valid) {
          next();
        } else {
          return res.status(401).json({
            status: 401,
            message: 'Unauthorized Error: Invalid access token.'
          }).end();
        }
      });
  }
});

我的问题:

我每次通话都停留在pending上。我没有任何回应,也没有任何错误。在编写中间件之前,我所有的调用都运行良好。

这是我处理api请求的方式:

路线

/**
   * Get all surveys associated with a participant
   *
   * URL: /participant/:id/surveys
   * METHOD: GET
   */
  router.get('/participant/:id/surveys', function(req, res) {
    if (!req.params.id) {
      return res.status(422).send('Participant id of null');
    }
    participantService
      .getSurveys(req.params.id)
      .then(data => {
        res.status(200).send(data);
      })
      .catch(err => {
        res.status(422).send(err);
      });
  });

服务:

function getSurveys(participantId) {
  return participantModel.getSurveys(participantId);
}

型号:

function getSurveys(participantId) {
  return new Promise((resolve, reject) => {
    db.query(
        ...
      ),
      (error, result) => {
        if (error) {
          dbFunc.connectionRelease;
          reject(error);
        } else {
          dbFunc.connectionRelease;
          resolve(result);
        }
      }
    );
  });
}

为什么我的中间件不发送任何响应?

0 个答案:

没有答案