首頁  >  問答  >  主體

為什麼Postman中使用正確的URL的第二個GET請求總是執行第一個請求並傳回其錯誤訊息的回應?

<p>我有兩個GET請求,但是在Postman中,如果我用正確的URL點擊第二個GET請求,那麼總是會運行第一個請求,並給出第一個請求的回應。優化問題</p> <pre class="brush:php;toolbar:false;">router.get( "/:id", [auth], usersController.getUser ); router.get( "/allUser", [auth], usersController.getAllUser );</pre> <p>使用者控制器檔案與相關方法</p> <pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) => { const id = req.params.id; try { let result = await userService.getUserAccount(id); if (result) { const resultWithoutPassword = {...result}; delete resultWithoutPassword.password; return res.status(HttpCodes.OK).send(resultWithoutPassword); } //console.error("error: Not Found."); return res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FOUND); } catch (error) { return res.status(HttpCodes.INTERNAL_SERVER_ERROR).json( { Error: AppMessages.INTERNAL_SERVER_ERROR, Message: "Id Should be an Integer." }); } } try{ let result = await userService.getAllUserAccounts(); return res.status(httpCodes.OK).json(result); } catch(err){ return res.status(httpCodes.INTERNAL_SERVER_ERROR).json({ERROR: AppMessages.INTERNAL_SERVER_ERROR}); } }</pre> <p><br /></p>
P粉311617763P粉311617763404 天前405

全部回覆(1)我來回復

  • 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
    );

    請記住,如果沒有看到完整的程式碼和上下文,很難準確定位問題。然而,這些一般的故障排除步驟應該可以幫助你辨識和解決問題。

    回覆
    0
  • 取消回覆