Rumah  >  Soal Jawab  >  teks badan

Mengapakah permintaan GET kedua dalam Postman dengan URL yang betul sentiasa melaksanakan permintaan pertama dan mengembalikan respons dengan mesej ralatnya?

<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粉311617763P粉311617763405 hari yang lalu410

membalas semua(1)saya akan balas

  • P粉208469050

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

    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.

    balas
    0
  • Batalbalas