在我的API中,我使用的是nodeJS,expressJS。它是一个基于微服务的架构。我已使用express-generator创建此API。以下是我的路由结构。我有一个中间件和下面给出的常规路由。 “ *”用于正则表达式。
// routing goes here for the middleware
app.use('/api/*/', (req, res, next) => {
// send it to middleware
middleware.entry(req, res, next);
});
// rest of the routing goes here, after satisfying the access conditions from middleware
app.use('/api/*/review', reviewRouter);
以下是中间件输入代码。它会调用auth服务,并确认请求是否可以访问该路由。
const entry = async (req, res, next) => {
try {
// let's get the auth url
const url = process.env.AUTH_URL + req.originalUrl;
console.log('review: ', req.body);
let response = {};
switch (req.method) {
case 'GET':
response = await fetch.get(url, {
method: 'get',
headers: req.headers
});
break;
case 'POST':
response = await fetch.get(url, {
method: 'post',
headers: req.headers,
body: JSON.stringify(req.body)
});
break;
case 'PUT':
response = await fetch.get(url, {
method: 'put',
headers: req.headers,
body: JSON.stringify(req.body)
});
break;
case 'DELETE':
response = await fetch.get(url, {
method: 'delete',
headers: req.headers
});
break;
}
if (response.code === 200) {
// we got the successful result, the access is good
if (response.data.user) {
req.user = response.data.user;
}
next();
}
else {
// error
const error = response.error;
return responseHelper.error(res, error, error.code ? error.code : codes.ERROR);
}
}
catch (error) {
console.log('e: ', error);
responseHelper.error(res, error, error.code ? error.code : codes.ERROR);
}
};
回到问题所在。一切正常。这是一个产品,现在已经运行了大约一年。昨天,安装了一些更新后,我重新启动了服务器。在这之间,发生了一些事情,使api请求成倍增加。例如,当我调用/ api / shopping / review时,理想情况下,它应该向中间件提交1个请求。但是它正在向中间件提交大约200多个请求。真奇怪本节不知何故:
// routing goes here for the middleware
app.use('/api/*/', (req, res, next) => {
// send it to middleware
middleware.entry(req, res, next);
});
被触发了100次。它只发生过一次,重新启动后又恢复正常。但这让我想知道此请求重复性可能是什么问题。有人可以帮助我了解在什么情况下可以重现此行为吗?可能是什么问题?这很重要,因为如果我找不到这种行为背后的原因,那么一旦它再次困扰着我,则始终会对应用程序构成威胁。任何建议将不胜感激。