req.query dan req.param di ExpressJS

93

Perbedaan utama antara req.querydan req.paramdi Express

  • Bagaimana Keduanya berbeda satu sama lain
  • Kapan digunakan lalu dalam kasus apa

Misalkan klien mengirimkan pasangan Android (Key, value) dalam permintaan ........ mana yang akan digunakan?

[EDIT]

Misalkan android mengirim permintaan POST -> Intention is to send (Key, Value) to client dan server harus melakukan kueri database berdasarkan nilai di server dan mengembalikan respons JSON

Lihat :: pertanyaan ini untuk program saya direferensikan: : Program Sederhana Express untuk query hasilnya

William Jones
sumber
1
Apakah maksud Anda req.querydan req.param?
arb
1
Iya ! ......... Saya telah mengubah pertanyaannya juga

Jawaban:

119

req.query akan mengembalikan objek JS setelah string kueri diurai.

/ user? name = tom & age = 55 - req.queryakan menghasilkan{name:"tom", age: "55"}

req.paramsakan mengembalikan parameter di rute yang cocok. Jika rute Anda adalah / user /: id dan Anda membuat permintaan ke / user / 5 - req.paramsakan menghasilkan{id: "5"}

req.paramadalah fungsi yang mengupas parameter dari permintaan. Semua ini dapat ditemukan di sini .

MEMPERBARUI

Jika kata kerjanya adalah a POSTdan Anda menggunakan bodyParser, maka Anda seharusnya bisa mendapatkan bentuk tubuh di dalam fungsi Anda req.body. Itu akan menjadi versi JS dari POSTbentuk ed.

arb
sumber
Terima kasih, lalu Misalkan klien mengirim katakanlah pasangan Android (Key, value) dalam permintaan ........ mana yang akan digunakan di Express?
Tidak ada cara untuk menjawab pertanyaan ini tanpa melihat permintaan yang dimaksud.
arb
Silakan lihat pertanyaan yang diperbarui ..... saya juga telah menyebutkan tautan ke program yang saya gunakan secara ekspres di salah satu pertanyaan yang saya posting ..... tolong tambahkan umpan balik!
@Permainan jika jawaban ini membantu Anda, pertimbangkan untuk menandainya sebagai jawaban atas pertanyaan ini. Terima kasih.
arb
16

req.queryadalah string kueri yang dikirim ke server, contoh /page?test = 1 , req.paramadalah parameter yang diteruskan ke handler.

app.get('/user/:id', handler);, pergi ke /user/blah, req.param.idakan kembali blah;

OneOfOne
sumber
Terima kasih, lalu Misalkan klien mengirim katakanlah pasangan Android (Key, value) dalam permintaan ........ yang mana yang akan digunakan?
1
Saya tidak tahu apa yang Anda bicarakan, jika itu permintaan POST, itu akan ada di req.data, jika GET t akan masukreq.param
OneOfOne
Hai, dapatkah Anda memberi tahu saya cara memeriksa req.params terhadap undefined?
Arj 1411
@AnandRaj itu hanya akan kosong, jadi periksac.Param("id") == ""
OneOfOne
@OneOfOne, Terima kasih atas balasan Anda. Biarkan saya memeriksanya dan akan memperbarui Anda
Arj 1411
14

Saya akan menyarankan menggunakan berikut ini

req.param('<param_name>')

req.param ("") bekerja sebagai berikut

Pencarian dilakukan dengan urutan berikut:

req.params
req.body
req.query

Akses langsung ke req.body, req.params, dan req.query harus diutamakan untuk kejelasan - kecuali Anda benar-benar menerima masukan dari setiap objek.

Ref: http://expressjs.com/4x/api.html#req.param

Abhijit Gaikwad
sumber
1
Hai, dapatkah Anda memberi tahu saya cara memeriksa req.params terhadap undefined?
Arj 1411
@AnandRaj apa yang Anda maksud dengan undefined? maksud Anda params tidak diketahui?
Abhijit Gaikwad
apa yang saya maksud adalah ketika saya memeriksa jenis req.params itu menunjukkan tidak terdefinisi. Tujuan saya adalah untuk memeriksa apakah req.params. <Parameter URI mana pun> adalah null atau tidak
Arj 1411
@AnandRaj bisakah Anda memposting kode Anda? Kode berikut berfungsi untuk saya var express = require ('express'); var app = express (); app.get ('/', function (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit Gaikwad
@AnandRaj coba jika (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad
11

Meneruskan params

GET request to "/cars/honda" 

mengembalikan daftar model mobil Honda

Meneruskan kueri

GET request to "/car/honda?color=blue"

mengembalikan daftar model mobil Honda, tetapi difilter sehingga hanya model dengan warna stok biru yang dikembalikan.

Tidak masuk akal untuk menambahkan filter tersebut ke dalam parameter URL (/ car / honda / color / blue) karena menurut REST, itu berarti kami ingin mendapatkan banyak informasi tentang warna "biru". Karena yang benar-benar kami inginkan adalah daftar model Honda yang difilter, kami menggunakan string kueri untuk menyaring hasil yang dikembalikan.

Perhatikan bahwa string kueri sebenarnya hanyalah pasangan {key: value} dalam format yang sedikit berbeda:? Key1 = value1 & key2 = value2 & key3 = value3.

Shivam Chhetri
sumber