Apakah ada cara untuk melakukannya dengan satu panggilan fungsi?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
Sesuatu seperti:
app.get("/", "/blabla", "/blablablabla", todo );
Saya tahu ini adalah kekacauan sintaks, tetapi hanya untuk memberikan gambaran tentang apa yang ingin saya capai, serangkaian rute akan luar biasa!
Ada yang tahu bagaimana melakukan ini?
Jawaban:
Saya menemukan pertanyaan ini sambil mencari fungsi yang sama.
@Jonathan Ong disebutkan dalam komentar di atas bahwa menggunakan array untuk jalur tidak digunakan lagi tetapi secara eksplisit dijelaskan di Express 4, dan berfungsi di Express 3.x. Berikut contoh sesuatu untuk dicoba:
Dari dalam
request
objek, dengan jalur/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:Perhatikan apa yang terjadi dengan params: Ia mengetahui grup dan params yang menangkap di semua jalur yang memungkinkan, apakah mereka digunakan dalam permintaan saat ini atau tidak.
Jadi menumpuk beberapa jalur melalui larik dapat dilakukan dengan mudah, tetapi efek sampingnya mungkin tidak dapat diprediksi jika Anda berharap untuk mengambil sesuatu yang berguna dari jalur yang digunakan oleh params atau grup tangkap. Ini mungkin lebih berguna untuk redundansi / aliasing, dalam hal ini akan bekerja dengan sangat baik.
Edit: Silakan lihat juga jawaban @ c24w di bawah ini .
Sunting 2: Ini adalah jawaban yang cukup populer. Harap diingat bahwa ExpressJS, seperti kebanyakan pustaka Node.js, adalah pesta yang dapat dipindahkan. Sementara perutean di atas masih berfungsi (saya menggunakannya saat ini, fitur yang sangat berguna), saya tidak dapat menjamin keluaran dari objek permintaan (ini tentu berbeda dari apa yang saya jelaskan). Harap uji dengan cermat untuk memastikan Anda mendapatkan hasil yang diinginkan.
sumber
:var
setelreq.param
yang tidak Anda gunakan. ini hanya digunakan dalam kasus ini untuk menyetel regex.(bla|blabla)
menyetel ekspresi reguler agar cocok, sehingga cocok dengan stringbla
danblablah
.?
menjadikan seluruh regex opsional, sehingga cocok/
juga.sumber
/bla(bla)?
juga berfungsi, tetapi parameter apa pun setelahnya tidak terisi dengan benar (mis./bla(bla)?/:value
tidak terisireq.params.value
). Ada yang tahu kenapa?req.params.var
tetapi Anda perlu memastikan bahwa Anda telahreq
meneruskan ke fungsinyaAnda benar-benar dapat mengirimkan serangkaian jalur , seperti yang Anda sebutkan, dan itu berfungsi dengan baik:
sumber
Sekadar menguraikan jawaban Kevin , ini dari dokumen 4.x :
Mereka memiliki beberapa contoh , termasuk:
sumber
Saya pergi untuk:
sumber
memerlukan file dari rute asli Anda dan tentukan rute baru seperti ini
sumber