Heim  >  Fragen und Antworten  >  Hauptteil

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>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粉311617763P粉311617763405 Tage vor412

Antworte allen(1)Ich werde antworten

  • P粉208469050

    P粉2084690502023-08-18 00:37:22

    听起来你在使用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
    );

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

    Antwort
    0
  • StornierenAntwort