req.query und req.param in ExpressJS

89

Hauptunterschiede zwischen req.queryund req.paramin Express

  • Wie unterscheiden sich beide voneinander?
  • Wann dann in welchen Fällen zu verwenden

Angenommen, ein Client sendet in der Anfrage beispielsweise ein Android-Paar (Schlüssel, Wert). Welches soll verwendet werden?

[BEARBEITEN]

Angenommen, Android sendet eine POST-Anfrage -> Es soll (Schlüssel, Wert) an den Client gesendet werden, und der Server sollte eine Datenbankabfrage basierend auf dem Wert auf dem Server durchführen und eine JSON-Antwort zurückgeben

Schauen :: diese Frage für das Programm i verwiesen: : Einfaches Express - Programm für ein Ergebnis der Abfrage

William Jones
quelle
1
Meinst du req.queryund req.param?
Arb
1
Ja ! ......... Ich habe die Frage auch geändert

Antworten:

114

req.query Gibt ein JS-Objekt zurück, nachdem die Abfragezeichenfolge analysiert wurde.

/ user? name = tom & age = 55 - req.querywürde ergeben{name:"tom", age: "55"}

req.paramsgibt Parameter in der übereinstimmenden Route zurück. Wenn Sie Ihre Route ist / user /: id und Sie eine Anfrage an / user / 5 - req.paramsergäbe{id: "5"}

req.paramist eine Funktion, die Parameter aus der Anforderung herauszieht. All dies finden Sie hier .

AKTUALISIEREN

Wenn das Verb a ist POSTund Sie verwenden bodyParser, sollten Sie in der Lage sein, den Formkörper in Ihrer Funktion zu erhalten req.body. Dies ist die analysierte JS-Version des POSTed-Formulars.

arb
quelle
Danke, dann Angenommen, ein Client sendet in der Anfrage beispielsweise ein Android-Paar (Schlüssel, Wert). Welches soll in Express verwendet werden?
Es gibt keine Möglichkeit, diese Frage zu beantworten, ohne die betreffende Anfrage zu sehen.
Arb
Bitte schauen Sie sich die aktualisierte Frage an ..... Ich habe auch den Link zu dem Programm, das ich in Express verwende, in einer der Fragen erwähnt, die ich gepostet habe ..... Bitte fügen Sie ein Feedback hinzu!
@Iplay Wenn diese Antwort Ihnen geholfen hat, können Sie sie als Antwort auf diese Frage markieren. Vielen Dank.
Arb
15

req.queryist die an den Server gesendete Abfragezeichenfolge, Beispiel /page?test = 1 , req.paramsind die an den Handler übergebenen Parameter.

app.get('/user/:id', handler);, Gehen /user/blah, req.param.idzurückkehren würde blah;

OneOfOne
quelle
Danke, dann Angenommen, ein Client sendet ein Android-Paar (Schlüssel, Wert) in der Anfrage ........ welches soll verwendet werden?
1
Ich habe keine Ahnung, wovon du sprichst, wenn es eine POST-Anfrage ist, wird es in der sein req.data, wenn es GET t wird inreq.param
OneOfOne
Hallo, können Sie mir bitte sagen, wie ich req.params gegen undefined prüfen kann?
Arj 1411
@ AnandRaj es wäre nur leer, also überprüfen Siec.Param("id") == ""
OneOfOne
@OneOfOne, Danke für deine Antwort. Lassen Sie mich es überprüfen und werden Sie aktualisieren
Arj 1411
14

Ich würde vorschlagen, folgendes zu verwenden

req.param('<param_name>')

req.param ("") funktioniert wie folgt

Die Suche wird in der folgenden Reihenfolge durchgeführt:

req.params
req.body
req.query

Der direkte Zugriff auf req.body, req.params und req.query sollte aus Gründen der Übersichtlichkeit bevorzugt werden - es sei denn, Sie akzeptieren wirklich Eingaben von jedem Objekt.

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

Abhijit Gaikwad
quelle
1
Hallo, können Sie mir bitte sagen, wie ich req.params gegen undefined prüfen kann?
Arj 1411
@AnandRaj was meinst du mit undefiniert? Meinst du, Parameter sind nicht bekannt?
Abhijit Gaikwad
Was ich meinte ist, als ich den Typ von req.params überprüfte, zeigt es undefiniert. Mein Ziel ist es zu überprüfen, ob req.params. <Beliebiger URI-Parameter> null ist oder nicht
Arj 1411
@AnandRaj kannst du bitte deinen Code posten? Der folgende Code funktioniert für mich 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 versuchen, wenn (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad
9

Parameter übergeben

GET request to "/cars/honda" 

gibt eine Liste der Honda-Automodelle zurück

Abfrage übergeben

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

Gibt eine Liste der Honda-Automodelle zurück, die jedoch gefiltert sind, sodass nur Modelle mit der Standardfarbe Blau zurückgegeben werden.

Es ist nicht sinnvoll, diese Filter in die URL-Parameter (/ car / honda / color / blue) einzufügen, da dies laut REST bedeuten würde, dass wir eine Reihe von Informationen über die Farbe "blau" erhalten möchten. Da wir wirklich eine gefilterte Liste von Honda-Modellen wollen, verwenden wir Abfragezeichenfolgen, um die zurückgegebenen Ergebnisse herauszufiltern.

Beachten Sie, dass die Abfragezeichenfolgen wirklich nur {key: value} -Paare in einem etwas anderen Format sind :? Key1 = value1 & key2 = value2 & key3 = value3.

Shivam Chhetri
quelle