Mengapakah permintaan GET kedua dalam Postman dengan URL yang betul sentiasa melaksanakan permintaan pertama dan mengembalikan respons dengan mesej ralatnya?
P粉311617763
2023-08-17 11:53:17
<p>Saya mempunyai dua permintaan GET, tetapi dalam Postman, jika saya menekan permintaan GET kedua dengan URL yang betul, permintaan pertama sentiasa dijalankan dan respons daripada permintaan pertama diberikan. Masalah pengoptimuman</p>
<pre class="brush:php;toolbar:false;">router.get(
"/:ID",
[auth],
usersController.getUser
);
router.get(
"/semua pengguna",
[auth],
usersController.getAllUser
);</pra>
<p>Fail pengawal pengguna dan kaedah berkaitan</p>
<pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) =>
const id = req.params.id;
cuba {
biarkan keputusan = menunggu userService.getUserAccount(id);
jika (hasil) {
const resultWithoutPassword = {...hasil};
padam resultWithoutPassword.password;
kembalikan res.status(HttpCodes.OK).send(resultWithoutPassword);
}
//console.error("ralat: Tidak Ditemui.");
kembalikan res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FUND);
} tangkap (ralat) {
kembalikan res.status(HttpCodes.INTERNAL_SERVER_ERROR).json(
{
Ralat: AppMessages.INTERNAL_SERVER_ERROR,
Mesej: "Id Haruslah Integer."
});
}
}
cuba{
biarkan keputusan = menunggu userService.getAllUserAccounts();
kembalikan res.status(httpCodes.OK).json(hasil);
}
tangkap(err){
kembali
res.status(httpCodes.INTERNAL_SERVER_ERROR).json({ERROR:
AppMessages.INTERNAL_SERVER_ERROR});
}
}</pre>
<p><br /></p>
Kedengarannya seperti anda mengalami gelagat yang tidak dijangka apabila membuat dua permintaan GET berbeza dalam Posmen apabila menggunakan penghalaan Express.js. Khususnya, apabila anda menghantar permintaan ke laluan kedua (/allUser), anda menerima respons daripada laluan pertama (/:id). Tingkah laku ini tidak konsisten dengan jangkaan anda.
Berikut ialah beberapa perkara yang anda boleh semak untuk menyelesaikan isu:
Perintah Penghalaan: Pastikan susunan penghalaan dalam Penghala Ekspres adalah betul. Laluan dipadankan dalam susunan yang ditakrifkan. Jika laluan /:id ditakrifkan sebelum laluan /allUser, ia mungkin menangkap permintaan yang harus dihantar ke laluan /allUser. Susunan laluan boleh ditukar jika mahu.
Konflik parameter laluan: Pastikan parameter yang ditakrifkan dalam laluan /:id tidak bercanggah dengan sebarang nilai yang mungkin bagi laluan /allUser. Sebagai contoh, jika anda menggunakan parameter kad bebas seperti /:id, ia mungkin secara tidak sengaja sepadan dengan rentetan "allUser" dan mencetuskan laluan yang salah. Jika perlu, parameter laluan boleh diubah suai untuk menjadikannya lebih spesifik.
Route middleware: Semak sama ada terdapat sebarang middleware digunakan pada laluan yang boleh menyebabkan kelakuan yang tidak dijangka. Dalam kes ini, perisian tengah [auth] mungkin mempengaruhi cara penghalaan dikendalikan. Sila semak perisian tengah untuk memastikan ia tidak mengganggu kelakuan biasa penghalaan.
Laluan penghalaan bertindih: Semak semula bahawa laluan penghalaan adalah berbeza dan tidak bertindih. Contohnya, jika laluan laluan ialah /allUser dan /:id, Express tidak seharusnya mempunyai sebarang kesamaran dalam memadankan permintaan masuk ke laluan ini.
Begini cara anda boleh melaraskan takrif laluan anda untuk lebih jelas:
Perlu diingat bahawa sukar untuk menentukan masalah tanpa melihat kod dan konteks penuh. Walau bagaimanapun, langkah penyelesaian masalah am ini akan membantu anda mengenal pasti dan menyelesaikan masalah tersebut.