Saya ingin mensimulasikan kesalahan 404 pada server Express / Node saya. Bagaimana saya bisa melakukan itu?
javascript
node.js
express
Randomblue
sumber
sumber
Jawaban:
Saat ini ada
status
fungsi khusus untuk ini pada objek respons. Rangkai saja di suatu tempat sebelum Anda meneleponsend
.sumber
res.status(404).render('error404')
res.status(404);
tidak akan mengirim respons AFAIK. Itu perlu dirantai dengan sesuatu, misalnyares.status(404).end();
atau contoh kedua Anda, atau perlu diikuti oleh misalnyares.end();
,res.send('Not found');
res.sendStatus(404)
Jawaban yang Diperbarui untuk Express 4.x
Daripada menggunakan
res.send(404)
seperti dalam versi Express yang lama, metode baru adalah:Express akan mengirimkan respons 404 yang sangat mendasar dengan teks "Tidak Ditemukan":
sumber
res.status(404)
tidak benarres.sendStatus(404)
.res.sendStatus(404)
benar. Ini sama denganres.status(404).send()
res.sendStatus(404);
setara denganres.status(404).send('Not Found')
Anda tidak perlu mensimulasikannya. Argumen kedua yang
res.send
saya percayai adalah kode status. Lewati saja 404 ke argumen itu.Biarkan saya mengklarifikasi bahwa: Per dokumentasi pada expressjs.org tampaknya seolah-olah nomor apa pun yang lewat
res.send()
akan ditafsirkan sebagai kode status. Jadi secara teknis Anda bisa lolos dengan:Sunting: Sayang saya, saya maksudkan
res
bukanreq
. Itu harus dipanggil pada responSunting: Pada Express 4,
send(status)
metode ini telah usang. Jika Anda menggunakan Express 4 atau lebih baru, gunakan:res.sendStatus(404)
sebagai gantinya. (Terima kasih @badcc untuk tip di komentar)sumber
res.send(404, "Could not find ID "+id)
.status(404).send('Not found')
Menurut situs yang akan saya posting di bawah, ini adalah cara Anda mengatur server Anda. Salah satu contoh yang mereka tunjukkan adalah ini:
dan fungsi rute mereka:
Ini satu arah. http://www.nodebeginner.org/
Dari situs lain, mereka membuat halaman dan kemudian memuatnya. Ini mungkin lebih dari apa yang Anda cari.
http://blog.poweredbyalt.net/?p=81
sumber
Dari situs Express , tentukan pengecualian NotFound dan buang setiap kali Anda ingin memiliki 404 halaman ATAU redirect ke / 404 dalam kasus di bawah ini:
sumber
app.use(function(err, res, res, next) { if (err.message.indexOf('NotFound') !== -1) { res.status(400).send('Not found dude'); }; /* else .. etc */ });
IMO cara terbaik adalah menggunakan
next()
fungsi ini:Kemudian kesalahan ditangani oleh penangan kesalahan Anda dan Anda dapat menata kesalahan dengan baik menggunakan HTML.
sumber