bodyParser.json на конкретном промежуточном ПО - PullRequest
0 голосов
/ 01 ноября 2018

В основном мне нужно bodyParse запрос, чтобы иметь возможность использовать express-recaptcha, и поэтому нужно bodyParse его в этом промежуточном программном обеспечении, но только там, а не для всего запроса.

Вот мое промежуточное ПО, для которого я хочу включить bodyParser (recaptcha.verify ожидает, что это будет json parser):

const recaptchaMiddleware = function(req, res, next) {
  return recaptcha.verify(req, function(error, data) {
    logger.log({
      level: 'debug',
      message: 'Verifying recaptcha token',
    })
    if (error) {
      logger.log({
        level: 'error',
        message: `Error verifying recaptcha token for request`,
        body: error,
      })
      return res.status(403).send()
    }
    next()
  })
}

Вот мой маршрут:

  .use(
    '/api/v1/mandrill',
    recaptchaMiddleware,
    function (req, res, next) {
      logger.log({
        level: 'debug',
        message: 'Debugme',
        body: JSON.stringify(req.body),
      })
      next()
    },
    createProxy(EMAIL_API, { onProxyRes: metricsMiddleware('emailservice', []) })
  )

Я мог бы сделать следующее при наведении на службу, которую я проксирую, чтобы мне это не нравилось ....

    const jsonParser = bodyParser.json({ limit: '10mb' })

  .use(
    '/api/v1/mandrill',
    jsonParser,
    recaptchaMiddleware,
    function (req, res, next) {
      logger.log({
        level: 'debug',
        message: 'Debugme',
        body: JSON.stringify(req.body),
      })
      next()
    },
    createProxy(EMAIL_API, { onProxyRes: metricsMiddleware('emailservice', []) })
  )

Резюме: Мне нужно bodyParser.json () на recaptcha.verify (req, function (error, data), а не на весь маршрут

...