基本上,我需要对请求进行bodyParse解析才能使用express-recaptcha,因此需要在该中间件中对它进行bodyParse解析,但对于整个请求而言,并不是这样。
这是我要启用bodyParser的中间件(recaptcha.verify希望它是json解析器):
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', []) })
)
摘要: 我需要对recaptcha.verify(req,function(error,data)而不是整个路由都使用bodyParser.json()