В основном мне нужно 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), а не на весь маршрут