Postman で正しい URL を持つ 2 番目の GET リクエストが常に最初のリクエストを実行し、エラー メッセージを含む応答を返すのはなぜですか?
P粉311617763
2023-08-17 11:53:17
<p>2 つの GET リクエストがありますが、Postman では、正しい URL で 2 番目の GET リクエストをヒットすると、最初のリクエストが常に実行され、最初のリクエストからの応答が返されます。最適化問題</p>
<pre class="brush:php;toolbar:false;">router.get(
"/:id",
[認証]、
usersController.getUser
);
ルーター.get(
"/すべてのユーザー"、
[認証]、
usersController.getAllUser
);</pre>
<p>ユーザー コントローラー ファイルと関連メソッド</p>
<pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) => {
const id = req.params.id;
試す {
let result = await userService.getUserAccount(id);
if (結果) {
const resultWithoutPassword = {...結果};
resultWithoutPassword.passwordを削除します。
return res.status(HttpCodes.OK).send(resultWithoutPassword);
}
//console.error("エラー: 見つかりません。");
return res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FOUND);
} キャッチ (エラー) {
return res.status(HttpCodes.INTERNAL_SERVER_ERROR).json(
{
エラー: AppMessages.INTERNAL_SERVER_ERROR、
メッセージ: 「ID は整数である必要があります。」
});
}
}
試す{
let result = await userService.getAllUserAccounts();
res.status(httpCodes.OK).json(結果)を返します。
}
キャッチ(エラー){
戻る
res.status(httpCodes.INTERNAL_SERVER_ERROR).json({ERROR:
AppMessages.INTERNAL_SERVER_ERROR});
}
}</pre>
<p><br /></p>
Express.js ルーティングを使用しているときに Postman で 2 つの異なる GET リクエストを行うと、予期しない動作が発生しているようです。具体的には、2 番目のルート (/allUser) にリクエストを送信すると、最初のルート (/:id) から応答を受け取ります。この動作はあなたの期待と矛盾します。
問題を解決するために確認できる点がいくつかあります:
ルーティング順序: Express ルーターのルーティング順序が正しいことを確認してください。ルートは定義された順序で照合されます。 /:id ルートが /allUser ルートの前に定義されている場合、/allUser ルートに送信される必要があるリクエストがキャッチされる可能性があります。必要に応じて、ルートの順序を入れ替えることができます。
Route パラメーターの競合: /:id ルートで定義されているパラメーターが、/allUser ルートの考えられる値と競合していないことを確認してください。たとえば、/:id などのワイルドカード パラメーターを使用すると、誤って文字列「allUser」と一致し、間違ったルートがトリガーされる可能性があります。必要に応じて、ルート パラメータを変更してより具体的にすることができます。
ルーティング ミドルウェア: ルートに適用されているミドルウェアが予期しない動作を引き起こす可能性があるかどうかを確認します。この場合、[auth] ミドルウェアがルーティングの処理方法に影響を与える可能性があります。ミドルウェアをチェックして、ルーティングの通常の動作を妨げていないかどうかを確認してください。
ルーティング パスが重複している: ルーティング パスが異なっていて、重複していないかどうかを再確認します。たとえば、ルート パスが /allUser および /:id である場合、Express は受信リクエストをこれらのルートに照合する際にあいまいさを持たないようにする必要があります。
わかりやすくするためにルート定義を調整する方法は次のとおりです:
リーリー完全なコードとコンテキストを確認しない限り、問題を特定するのは難しいことに留意してください。ただし、これらの一般的なトラブルシューティング手順は、問題を特定して解決するのに役立ちます。