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
P粉311617763 2023-08-17 11:53:17
0
1
439
<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>
P粉311617763
P粉311617763

Antworte allen(1)
P粉208469050

听起来你在使用Express.js路由时,在Postman中进行两个不同的GET请求时遇到了意外行为。具体来说,当你发送一个请求到第二个路由(/allUser)时,你收到的是第一个路由(/:id)的响应。这种行为与你的期望不符。

以下是一些你可以检查来解决问题的方法:

路由顺序:确保Express路由器中的路由顺序是正确的。路由按照它们定义的顺序进行匹配。如果/:id路由在/allUser路由之前定义,它可能会捕捉到本应该发送到/allUser路由的请求。如果需要,可以交换路由的顺序。

路由参数冲突:确保在/:id路由中定义的参数与/allUser路由的任何可能值不冲突。例如,如果你使用了通配符参数,比如/:id,它可能会意外地匹配到字符串"allUser"并触发错误的路由。如果需要,可以修改路由参数使其更具体。

路由中间件:检查是否有应用到路由上的中间件可能会导致意外行为。在这种情况下,[auth]中间件可能会影响路由的处理方式。请检查中间件,确保它不会干扰路由的正常行为。

路由路径重叠:仔细检查路由路径是否是不同且不重叠的。例如,如果路由路径是/allUser和/:id,Express在匹配传入请求到这些路由时不应该存在任何歧义。

以下是你可以调整路由定义以提高清晰度的方法:

// 在正确的顺序中定义路由
router.get(
    "/allUser",
    usersController.getAllUser
);

router.get(
    "/:id",
    [auth],
    usersController.getUser
);

请记住,如果没有看到完整的代码和上下文,很难准确定位问题。然而,这些一般的故障排除步骤应该能帮助你识别和解决问题。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!