req.query e req.param in ExpressJS


93

Principali differenze tra req.querye req.paramin Express

  • Come sono entrambi diversi l'uno dall'altro
  • Quando usarlo e in quali casi

Supponiamo che un client invii una coppia di Android (chiave, valore) nella richiesta ........ quale usare?

[MODIFICARE]

Supponiamo che Android invii una richiesta POST -> L'intenzione è di inviare (chiave, valore) al client e il server dovrebbe eseguire una query sul database in base al valore nel server e restituire la risposta JSON

Guardate :: a questa domanda per il programma ho fatto riferimento: : Programma semplice Express per interrogare un risultato


1
Intendi req.querye req.param?
arb

1
sì ! ......... Ho modificato anche la domanda

Risposte:


119

req.query restituirà un oggetto JS dopo che la stringa di query è stata analizzata.

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

req.paramsrestituirà i parametri nella rotta corrispondente. Se la tua rotta è / user /: id e fai una richiesta a / user / 5 - req.paramscederebbe{id: "5"}

req.paramè una funzione che elimina i parametri dalla richiesta. Tutto questo può essere trovato qui .

AGGIORNARE

Se il verbo è a POSTe stai usando bodyParser, dovresti essere in grado di ottenere il corpo della forma con cui funzioni req.body. Questa sarà la versione JS analizzata del POSTmodulo ed.


Grazie, quindi Supponiamo che un client invii una coppia di Android (Key, value) nella richiesta ........ quale usare in Express?

Non c'è modo di rispondere a questa domanda senza vedere la richiesta in questione.
arb

Per favore guarda la domanda aggiornata ..... ho anche menzionato il link al programma che sto usando in express in una delle domande che ho postato ..... aggiungi un feed back!

@ Gioca se questa risposta ti ha aiutato, ti preghiamo di contrassegnarla come risposta a questa domanda. Grazie.
arb

16

req.queryè la stringa di query inviata al server, esempio /page?test = 1 , req.paramsono i parametri passati al gestore.

app.get('/user/:id', handler);, andando a /user/blah, req.param.idtornerebbe blah;


Grazie, quindi supponiamo che un client invii diciamo una coppia Android (chiave, valore) nella richiesta ........ quale usare?

1
Non ho idea di cosa stai parlando, se è una richiesta POST, sarà in req.data, se è GET sarà inreq.param
OneOfOne

Ciao, potresti dirmi come controllare req.params contro undefined?
Arj 1411

@AnandRaj sarebbe solo vuoto, quindi controllac.Param("id") == ""
OneOfOne

@OneOfOne, grazie per la tua risposta. Fammi controllare e ti aggiornerò
Arj 1411

14

Suggerirei di utilizzare quanto segue

req.param('<param_name>')

req.param ("") funziona come segue

La ricerca viene eseguita nel seguente ordine:

req.params
req.body
req.query

L'accesso diretto a req.body, req.params e req.query dovrebbe essere favorito per maggiore chiarezza, a meno che non si accetti veramente l'input da ciascun oggetto.

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


1
Ciao, potresti dirmi come controllare req.params contro undefined?
Arj 1411

@AnandRaj cosa intendi per undefined? vuoi dire che i parametri non sono noti?
Abhijit Gaikwad

quello che volevo dire è che quando ho controllato il tipo di req.params mostra undefined. Il mio obiettivo è verificare se req.params. <Qualsiasi parametro URI> è nullo o meno
Arj 1411

@AnandRaj puoi inserire il tuo codice? Il codice seguente funziona per me 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 Gaikwad

11

Passaggio di parametri

GET request to "/cars/honda" 

restituisce un elenco di modelli di auto Honda

Passaggio di query

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

restituisce un elenco di modelli di auto Honda, ma viene filtrato in modo che vengano restituiti solo i modelli con un colore di serie blu.

Non ha senso aggiungere questi filtri nei parametri URL (/ car / honda / color / blue) perché secondo REST, ciò significherebbe che vogliamo ottenere un mucchio di informazioni sul colore "blu". Poiché ciò che vogliamo veramente è un elenco filtrato di modelli Honda, utilizziamo stringhe di query per filtrare i risultati che vengono restituiti.

Si noti che le stringhe di query sono in realtà solo coppie {chiave: valore} in un formato leggermente diverso:? Chiave1 = valore1 & chiave2 = valore2 & chiave3 = valore3.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.