ExpressJS'de req.query ve req.param


93

Ekspres arasındaki req.queryve req.paramarasındaki temel farklar

  • İkisi de birbirinden nasıl farklı
  • Ne zaman kullanılmalı, o zaman hangi durumlarda

Bir istemcinin istekte Android (Anahtar, değer) çifti gönderdiğini varsayalım ........ hangisini kullanmalı?

[DÜZENLE]

Android'in bir POST isteği gönderdiğini -> Niyetin istemciye (Anahtar, Değer) göndermek olduğunu ve sunucunun sunucudaki değere göre bir veritabanı sorgusu gerçekleştirmesi ve JSON yanıtı döndürmesi gerektiğini varsayalım.

Bak :: programı için bu soruya ben başvurulan: : Basit Ekspres programını bir sonuç sorgulamak için


1
Şunu musunuz req.queryve req.param?
arb

1
Evet ! ......... Soruyu da değiştirdim

Yanıtlar:


119

req.query sorgu dizesi ayrıştırıldıktan sonra bir JS nesnesi döndürür.

/ user? name = tom & age = 55 - req.querysonuç verir{name:"tom", age: "55"}

req.paramseşleşen rotadaki parametreleri döndürür. Rotanızı ise / user /: id ve istekte bulunur / kullanıcı / 5 - req.paramsdoğuracak{id: "5"}

req.paramparametreleri istekten çıkaran bir işlevdir. Bunların tümü burada bulunabilir .

GÜNCELLEME

Fiil a ise POSTve kullanıyorsanız bodyParser, o zaman işlevinizdeki form gövdesini alabilmelisiniz req.body. Bu, POSTed formunun ayrıştırılmış JS sürümü olacaktır .


Teşekkürler, o zaman bir istemcinin istekte Android (Anahtar, değer) çifti gönderdiğini varsayalım ...

Söz konusu talebi görmeden bu soruya cevap vermenin bir yolu yok.
arb

Lütfen güncellenmiş soruya bakın ..... Ayrıca gönderdiğim sorulardan birinde kullandığım programın bağlantısından da bahsetmiştim ..... lütfen bir geri bildirim ekleyin!

@Play, bu cevap size yardımcı olduysa, lütfen bu sorunun cevabı olarak işaretlemeyi düşünün. Teşekkürler.
arb

16

req.querysunucuya gönderilen sorgu dizesidir, örnek /page?test = 1 , req.paramişleyiciye iletilen parametrelerdir.

app.get('/user/:id', handler);, gidiyor /user/blah, req.param.iddönecekti blah;


Teşekkürler, o zaman bir istemcinin istekte Android (Anahtar, değer) çifti gönderdiğini varsayalım ...

1
Neden bahsettiğiniz hakkında hiçbir fikrim yok, eğer bir POST req.dataisteğiyse , içinde olacak , eğer GET ise içinde olacakreq.param
OneOfOne

Merhaba, req.params'i undefined'a karşı nasıl kontrol edeceğimi söyler misiniz?
Arj 1411

@AnandRaj sadece boş olurdu, o yüzden kontrol etc.Param("id") == ""
OneOfOne

@OneOfOne, Cevabınız için teşekkürler. Kontrol edeyim ve sizi güncelleyeceğim
Arj 1411

14

Aşağıdakileri kullanmanızı öneririm

req.param('<param_name>')

req.param ("") aşağıdaki gibi çalışır

Arama, aşağıdaki sırayla gerçekleştirilir:

req.params
req.body
req.query

Her nesneden gelen girdiyi gerçekten kabul etmediğiniz sürece, req.body, req.params ve req.query'ye doğrudan erişim netlik açısından tercih edilmelidir.

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


1
Merhaba, req.params'i undefined'a karşı nasıl kontrol edeceğimi söyler misiniz?
Arj 1411

@AnandRaj undefined derken neyi kastediyorsunuz? Paramların bilinmediğini mi söylüyorsun?
Abhijit Gaikwad

Demek istediğim, req.params türünü kontrol ettiğimde undefined gösteriyor. Amacım, req.params. <Herhangi bir URI parametresi> null olup olmadığını kontrol etmek
Arj 1411

@AnandRaj kodunuzu gönderebilir misiniz? Aşağıdaki kod benim için çalışıyor 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 try if (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit

11

Geçen parametreler

GET request to "/cars/honda" 

Honda araba modellerinin bir listesini döndürür

Geçen sorgu

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

Honda otomobil modellerinin bir listesini döndürür, ancak filtrelenir, böylece yalnızca stok rengi mavi olan modeller döndürülür.

Bu filtreleri URL parametrelerine (/ car / honda / color / blue) eklemek mantıklı değil çünkü REST'e göre bu, "mavi" rengi hakkında bir dizi bilgi almak istediğimiz anlamına gelir. Gerçekten istediğimiz Honda modellerinin filtrelenmiş bir listesi olduğundan, döndürülen sonuçları filtrelemek için sorgu dizelerini kullanırız.

Sorgu dizelerinin gerçekten biraz farklı bir biçimde yalnızca {anahtar: değer} çiftleri olduğuna dikkat edin:? Key1 = value1 & key2 = value2 & key3 = value3.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.