В моем приложении я хотел бы иметь возможность перехватить сообщение, которое создается пакетом express-rate-limit. Это пример кода, который у меня есть. Я хотел бы иметь возможность перехватить часть сообщения с помощью промежуточного программного обеспечения, чтобы я мог постобработать его (в этом случае у меня несколько языков).
const apiCreatingAccountLimiter = rateLimit({
windowMs: 10 * 60 * 1000, // 10 minutes
max: 10, // limit each IP to 10 requests per windowMs
message: {
limiter: true,
type: "error",
message: 'maximum_accounts'
}
});
, а затем
router.post('/signup', apiCreatingAccountLimiter, (req, res, next) => {
// handling the post request
})
У меня есть аналогичная настройка промежуточного программного обеспечения для некоторых других моих сообщений API:
// error processing middleware
app.use((err, req, res, next) => {
const statusCode = err.statusCode || 500;
res.status(statusCode).send({
type: 'error',
message: err.message,
fields: err.fields === '' ? '' : err.fields,
code: err.code === '' ? '' : err.code,
section: err.section === '' ? 'general' : err.section
});
});
Однако при попытке прочитать сообщение из пакета express-rate-limit оно, похоже, не проходит через это промежуточное ПОвообще. Я полагаю, это происходит потому, что это происходит еще до того, как он может достичь какого-либо API и вызвать это промежуточное ПО.
Глядя на проходящую через res часть, я вижу, что есть объект со следующими данными:
rateLimit:
{ limit: 10,
current: 10,
remaining: 0,
resetTime: 2019-10-21T12:35:46.919Z
},
Но, похоже, это не транспортировка объекта сообщения, установленного в самом верху в apiCreatingAccountLimiter. Интересно, как мне к этому добраться?
Кто-нибудь знает, как это можно сделать? Я не хочу, чтобы эти сообщения были переведены на внешний интерфейс. Мне нужно, чтобы перевод происходил на сервере NodeJS. Меня интересует только часть промежуточного программного обеспечения, где я могу перехватить сообщение и обработать его.