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


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.


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;


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.