Mengapakah permintaan GET kedua dalam Postman dengan URL yang betul sentiasa melaksanakan permintaan pertama dan mengembalikan respons dengan mesej ralatnya?
P粉311617763
P粉311617763 2023-08-17 11:53:17
0
1
404
<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>
P粉311617763
P粉311617763

membalas semua(1)
P粉208469050

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:

// 在正确的顺序中定义路由
router.get(
    "/allUser",
    usersController.getAllUser
);

router.get(
    "/:id",
    [auth],
    usersController.getUser
);

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!