Maison  >  Questions et réponses  >  le corps du texte

Pourquoi la deuxième requête GET dans Postman avec l'URL correcte exécute-t-elle toujours la première requête et renvoie la réponse avec son message d'erreur ?

<p>J'ai deux requêtes GET, mais dans Postman, si j'appuie sur la deuxième requête GET avec l'URL correcte, la première requête est toujours exécutée et la réponse de la première requête est donnée. Problème d'optimisation</p> <pre class="brush:php;toolbar:false;">router.get( "/:identifiant", [authentifier], utilisateursController.getUser ); routeur.get( "/tous les utilisateurs", [authentifié], utilisateursController.getAllUser );</pré> <p>Fichiers du contrôleur utilisateur et méthodes associées</p> <pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) => const id = req.params.id; essayer { let result = wait userService.getUserAccount(id); si (résultat) { const resultWithoutPassword = {...result}; supprimer resultWithoutPassword.password ; return res.status(HttpCodes.OK).send(resultWithoutPassword); } //console.error("erreur : introuvable."); return res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FOUND); } attraper (erreur) { retourner res.status(HttpCodes.INTERNAL_SERVER_ERROR).json( { Erreur : AppMessages.INTERNAL_SERVER_ERROR, Message : « L’identifiant doit être un nombre entier. » }); } } essayer{ let result = wait userService.getAllUserAccounts(); return res.status(httpCodes.OK).json(result); } attraper(erreur){ retour res.status(httpCodes.INTERNAL_SERVER_ERROR).json({ERREUR : AppMessages.INTERNAL_SERVER_ERROR}); } }</pré> <p><br /></p>
P粉311617763P粉311617763405 Il y a quelques jours409

répondre à tous(1)je répondrai

  • P粉208469050

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

    On dirait que vous rencontrez un comportement inattendu lorsque vous effectuez deux requêtes GET différentes dans Postman lors de l'utilisation du routage Express.js. Plus précisément, lorsque vous envoyez une requête à la deuxième route (/allUser), vous recevez une réponse de la première route (/:id). Ce comportement n'est pas conforme à vos attentes.

    Voici quelques éléments que vous pouvez vérifier pour résoudre le problème :

    Ordre de routage : assurez-vous que l'ordre de routage dans Express Router est correct. Les itinéraires sont mis en correspondance dans l'ordre dans lequel ils sont définis. Si la route /:id est définie avant la route /allUser, elle peut intercepter les requêtes qui doivent être envoyées à la route /allUser. L'ordre des itinéraires peut être inversé si vous le souhaitez.

    Conflits de paramètres de route : assurez-vous que les paramètres définis dans la route /:id n'entrent pas en conflit avec les valeurs possibles de la route /allUser. Par exemple, si vous utilisez un paramètre générique tel que /:id, il peut accidentellement correspondre à la chaîne « allUser » et déclencher une mauvaise route. Si nécessaire, les paramètres de l'itinéraire peuvent être modifiés pour les rendre plus spécifiques.

    Middleware d'itinéraire : vérifiez s'il existe un middleware appliqué à l'itinéraire qui pourrait provoquer un comportement inattendu. Dans ce cas, le middleware [auth] peut affecter la façon dont le routage est géré. Veuillez vérifier le middleware pour vous assurer qu'il n'interfère pas avec le comportement normal du routage.

    Les chemins de routage se chevauchent : vérifiez que les chemins de routage sont différents et ne se chevauchent pas. Par exemple, si les chemins de route sont /allUser et /:id, Express ne devrait avoir aucune ambiguïté dans la correspondance des demandes entrantes avec ces routes.

    Voici comment ajuster vos définitions d'itinéraire pour plus de clarté :

    // 在正确的顺序中定义路由
    router.get(
        "/allUser",
        usersController.getAllUser
    );
    
    router.get(
        "/:id",
        [auth],
        usersController.getUser
    );

    Gardez à l'esprit qu'il est difficile d'identifier le problème sans voir le code complet et le contexte. Toutefois, ces étapes de dépannage générales devraient vous aider à identifier et à résoudre le problème.

    répondre
    0
  • Annulerrépondre