Warum führt die zweite GET-Anfrage in Postman mit der richtigen URL immer die erste Anfrage aus und gibt die Antwort mit ihrer Fehlermeldung zurück?
P粉311617763
2023-08-17 11:53:17
<p>Ich habe zwei GET-Anfragen, aber wenn ich in Postman die zweite GET-Anfrage mit der richtigen URL erreiche, wird immer die erste Anfrage ausgeführt und die Antwort der ersten Anfrage wird gegeben. Optimierungsproblem</p>
<pre class="brush:php;toolbar:false;">router.get(
"/:Ausweis",
[auth.],
userController.getUser
);
router.get(
"/alle Benutzer",
[auth.],
userController.getAllUser
);</pre>
<p>Benutzer-Controller-Dateien und zugehörige Methoden</p>
<pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) =>
const id = req.params.id;
versuchen {
let result = wait userService.getUserAccount(id);
if (Ergebnis) {
const resultWithoutPassword = {...result};
resultWithoutPassword.password löschen;
return res.status(HttpCodes.OK).send(resultWithoutPassword);
}
//console.error("Fehler: Nicht gefunden.");
return res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FOUND);
} Catch (Fehler) {
return res.status(HttpCodes.INTERNAL_SERVER_ERROR).json(
{
Fehler: AppMessages.INTERNAL_SERVER_ERROR,
Meldung: „ID sollte eine Ganzzahl sein.“
});
}
}
versuchen{
let result = waiting userService.getAllUserAccounts();
return res.status(httpCodes.OK).json(result);
}
Catch(err){
zurückkehren
res.status(httpCodes.INTERNAL_SERVER_ERROR).json({FEHLER:
AppMessages.INTERNAL_SERVER_ERROR});
}
}</pre>
<p><br /></p>
听起来你在使用Express.js路由时,在Postman中进行两个不同的GET请求时遇到了意外行为。具体来说,当你发送一个请求到第二个路由(/allUser)时,你收到的是第一个路由(/:id)的响应。这种行为与你的期望不符。
以下是一些你可以检查来解决问题的方法:
路由顺序:确保Express路由器中的路由顺序是正确的。路由按照它们定义的顺序进行匹配。如果/:id路由在/allUser路由之前定义,它可能会捕捉到本应该发送到/allUser路由的请求。如果需要,可以交换路由的顺序。
路由参数冲突:确保在/:id路由中定义的参数与/allUser路由的任何可能值不冲突。例如,如果你使用了通配符参数,比如/:id,它可能会意外地匹配到字符串"allUser"并触发错误的路由。如果需要,可以修改路由参数使其更具体。
路由中间件:检查是否有应用到路由上的中间件可能会导致意外行为。在这种情况下,[auth]中间件可能会影响路由的处理方式。请检查中间件,确保它不会干扰路由的正常行为。
路由路径重叠:仔细检查路由路径是否是不同且不重叠的。例如,如果路由路径是/allUser和/:id,Express在匹配传入请求到这些路由时不应该存在任何歧义。
以下是你可以调整路由定义以提高清晰度的方法:
请记住,如果没有看到完整的代码和上下文,很难准确定位问题。然而,这些一般的故障排除步骤应该能帮助你识别和解决问题。