Saya tahu cara mendapatkan params untuk pertanyaan seperti ini:
app.get('/sample/:id', routes.sample);
Dalam hal ini, saya dapat menggunakan req.params.id
untuk mendapatkan parameter (misalnya 2
dalam /sample/2
).
Namun, untuk url seperti /sample/2?color=red
, bagaimana saya bisa mengakses variabel color
?
Saya mencoba req.params.color
tetapi tidak berhasil.
node.js
express
query-string
Hanfei Sun
sumber
sumber
id
di fungsi Anda seperti ini:var sampleId = req.params.id;
.req.params.whatever
dalam versi terbaru.req.params
berbeda darireq.query
! expressjs.com/en/api.html#req.params expressjs.com/en/api.html#req.query @adelriosantiagoGunakan req.query, untuk mendapatkan nilai dalam parameter string kueri di rute. Refer req.query . Katakanlah jika dalam sebuah rute, http: // localhost: 3000 /? Name = satyam Anda ingin mendapatkan nilai untuk parameter nama, maka pengendali rute 'Get' Anda akan seperti ini: -
sumber
Pembaruan:
req.param()
sekarang sudah usang, jadi ke depan jangan gunakan jawaban ini.Jawaban Anda adalah cara yang disukai untuk melakukannya, namun saya pikir saya akan menunjukkan bahwa Anda juga dapat mengakses parameter url, posting, dan rute dengan semua
req.param(parameterName, defaultValue)
.Dalam kasus Anda:
Dari panduan kilat:
Perhatikan bahwa panduan ini menyatakan sebagai berikut:
Namun dalam praktiknya, saya benar-benar menemukan
req.param()
cukup jelas dan membuat beberapa jenis refactoring lebih mudah.sumber
String dan parameter kueri berbeda.
Anda harus menggunakan keduanya dalam url perutean tunggal
Silakan periksa contoh di bawah ini semoga bermanfaat bagi Anda.
Dapatkan tautan untuk melewati segmen kedua Anda adalah contoh id Anda: http: // localhost: port / sample / 123
Jika Anda menghadapi masalah, gunakan variabel Passing sebagai string kueri menggunakan '?' operator
Dapatkan tautan Anda seperti contoh ini: http: // localhost: port / sample? Id = 123
Keduanya dalam satu contoh
Dapatkan tautan contoh: http: // localhost: port / sample / 123? Id = 123
sumber
@ Jawaban Zugwait benar.
req.param()
sudah ditinggalkan. Anda harus menggunakanreq.params
,req.query
ataureq.body
.Tetapi hanya untuk membuatnya lebih jelas:
req.params
akan diisi hanya dengan nilai rute. Artinya, jika Anda memiliki rute seperti/users/:id
, Anda dapat mengaksesid
direq.params.id
ataureq.params['id']
.req.query
danreq.body
akan diisi dengan semua params, terlepas dari apakah mereka berada di rute atau tidak. Tentu saja, parameter dalam string kueri akan tersedia direq.query
dan parameter dalam badan pos akan tersedia direq.body
.Jadi, menjawab pertanyaan Anda, karena
color
tidak ada dalam rute, Anda harus dapat menggunakannyareq.query.color
ataureq.query['color']
.sumber
Manual kilat mengatakan bahwa Anda harus menggunakan req.query untuk mengakses QueryString.
sumber
sumber
Teknik yang bagus yang saya mulai gunakan dengan beberapa aplikasi saya di express adalah untuk membuat objek yang menggabungkan kueri, params, dan bidang isian objek permintaan express.
Kemudian di badan pengontrol Anda, atau di mana pun dalam lingkup rantai permintaan ekspres, Anda dapat menggunakan sesuatu seperti di bawah ini:
Ini membuatnya menyenangkan dan berguna untuk hanya "menyelidiki" semua "data khusus" yang mungkin dikirimkan oleh pengguna dengan permintaan mereka.
Catatan
Mengapa bidang 'properti'? Karena itu adalah potongan cut-down, saya menggunakan teknik ini di sejumlah API saya, saya juga menyimpan data otentikasi / otorisasi ke objek ini, contoh di bawah ini.
sumber