Können wir die Variablen in der Abfragezeichenfolge in Node.js genauso abrufen wie $_GET
in PHP?
Ich weiß, dass wir in Node.js die URL in der Anfrage erhalten können. Gibt es eine Methode, um die Parameter der Abfragezeichenfolge abzurufen?
node.js
query-string
express
XMen
quelle
quelle
Antworten:
In Express ist es bereits für Sie erledigt und Sie können einfach req.query dafür verwenden:
Andernfalls können Sie in NodeJS manuell auf req.url und das integrierte
url
Modul zugreifen, um [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) manuell:quelle
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
oderreq.param
(was anders ist alsreq.params
... siehe unten.request
und hat nichts mit Express zu tun. Siehe @ Whitequarks Antwort unten (Verwendungrequest.query
)Da Sie Express.js in Ihren Tags erwähnt haben, finden Sie hier eine Express-spezifische Antwort: Verwenden Sie req.query . Z.B
quelle
req.query.id
die Klammer-Notation verwenden sollten.Verwenden Sie in Express
req.query
.req.params
Ruft nur die Routenparameter ab, nicht die Parameter der Abfragezeichenfolge. Siehe die Express- oder Segeldokumentation :Meistens möchten Sie jedoch den Wert eines Parameters unabhängig von seiner Quelle abrufen. In diesem Fall verwenden
req.param('foo')
.Der Wert des Parameters wird zurückgegeben, unabhängig davon, ob sich die Variable in den Routenparametern, der Abfragezeichenfolge oder dem codierten Anforderungshauptteil befand.
Randnotiz: Wenn Sie den Schnittpunkt aller drei Arten von Anforderungsparametern (ähnlich wie bei PHPs) ermitteln möchten
$_REQUEST
, müssen Sie nur die Parameter zusammenführen. So habe ich sie in Sails eingerichtet . Beachten Sie, dass die Pfad- / Routenparameter object (req.params
) Array-Eigenschaften haben, daher ist die Reihenfolge wichtig (obwohl sich dies in Express 4 ändern kann ).quelle
req.params
den Sails-Dokumenten: sailsjs.org/#/documentation/reference/req/req.params.html und den neuen Express-Dokumenten: expressjs.com/4x/api.html#req.paramsreq.param()
wahrscheinlich in Express 5 vollständig entfernt. Dies wird erst einige Zeit später im Jahr 2017 unmittelbar bevorstehen, daher werde ich mit der Bearbeitung warten diese Antwort bis dahin. In der Zwischenzeit: Die Verwendungreq.param()
mit Express <= 3.x / Sails <= 0.12 und mit der neuesten verfügbaren Version von Express 4 ist sicher , wenn auch mit einer Meldung über das Verfallsprotokoll. (Für Sails-Benutzer: Die Implementierung vonreq.param()
wird ab Sails v1.0 in den Kern verschoben und wird auch in Zukunft in Sails vollständig unterstützt.)Für Express.js möchten Sie Folgendes tun
req.params
:quelle
Ich habe aus den anderen Antworten gelernt und mich entschieden, diesen Code auf meiner Website zu verwenden:
Dann können Sie einfach anrufen
wo sollte die URL für get sein
quelle
parse
aufreq.url
Konvertiten zu einem Objekt.quelle
Wenn Sie ES6 und Express verwenden , versuchen Sie diesen
destructuring
Ansatz:Im Zusammenhang:
Sie können auch Standardwerte verwenden mit
destructuring
:quelle
Es gibt zwei Möglichkeiten, Parameter über die GET-Methode zu übergeben.
Methode 1: Der MVC-Ansatz, bei dem Sie die Parameter wie / routename /: paramname übergeben.
In diesem Fall können Sie req.params.paramname verwenden, um den Parameterwert abzurufen Ich erwarte, dass die ID als Parameter-
Link wie folgt lautet : http://myhost.com/items/23
Methode 2: Allgemeiner Ansatz: Übergeben von Variablen als Abfragezeichenfolge mit '?' Operator
Zum Beispiel verweisen
wir auf den folgenden Code, in dem ich eine ID als Abfrageparameter- Link erwarte : http://myhost.com/items?id=23
quelle
Sie sollten in der Lage sein, so etwas zu tun:
quelle
UPDATE 4. Mai 2014
Alte Antwort hier erhalten: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Installieren Sie Express:
npm install express
app.js.
2) Führen Sie die App aus:
node app.js
3) Besuchen Sie im Browser:
http://localhost:3000/endpoint?id=something
(Viele Dinge haben sich seit meiner Antwort geändert und ich glaube, es lohnt sich, die Dinge auf dem neuesten Stand zu halten.)
quelle
Ein kleiner HTTP-Server von Node.js, der Port 9080 überwacht, GET- oder POST-Daten analysiert und als Teil der Antwort an den Client zurücksendet, lautet:
Speichern Sie es als
parse.js
und führen Sie es auf der Konsole aus, indem Sie "node parse.js" eingeben.quelle
Whitequark reagierte nett. Bei den aktuellen Versionen von Node.js und Express.js ist jedoch eine weitere Zeile erforderlich. Stellen Sie sicher, dass Sie das 'require http' (zweite Zeile) hinzufügen. Ich habe hier ein ausführlicheres Beispiel veröffentlicht, das zeigt, wie dieser Aufruf funktionieren kann. Geben Sie nach dem Ausführen
http://localhost:8080/?name=abel&fruit=apple
Ihren Browser ein und Sie erhalten eine coole Antwort basierend auf dem Code.quelle
Es ist so einfach:
Beispiel-URL:
Sie können alle Werte der Abfragezeichenfolge drucken, indem Sie Folgendes verwenden:
Ausgabe
So drucken Sie spezifisch:
Ausgabe
quelle
Sie können verwenden
quelle
Sie können mit Express ^ 4.15.4 verwenden:
Hoffe das hilft.
quelle
In
express.js
Sie es recht einfach zu bekommen, alles , was Sie in Ihrer Controller - Funktion tun müssen , ist:Und das ist alles, vorausgesetzt, Sie verwenden die es6-Syntax.
PD.
{id}
steht fürObject destructuring
eine neue es6-Funktion.quelle
Sie können dies verwenden oder Body-Parser ausprobieren, um spezielle Elemente aus den Anforderungsparametern zu analysieren.
quelle
Es ist eigentlich ganz einfach:
quelle
Sie können das URL-Modul verwenden, um Parameter mithilfe von url.parse zu erfassen
In Expressjs wird es gemacht von,
Z.B:
quelle
In Express können wir einfach verwenden
req.query.<name>
. Es funktioniert genauso wie$_GET['name']
in PHP.quelle
Aus meiner Sicht denke ich, dass viele Menschen zwei verschiedene Konzepte mischen. Während der REST-Entwicklung war ich mit der Übergabe von Informationen in der URL auf zwei Arten vertraut: "Pfadvariablen" und "Anforderungsparameter" (Abfrageparameter). Der RFC beschreibt die Teile des URI folgendermaßen: Geben Sie hier die Linkbeschreibung ein Daher habe ich verstanden, dass der Autor wissen möchte, wie Anforderungsparameter übergeben werden. Ich möchte das Thema nur verständlicher machen, aber die Lösung wurde hier oft erwähnt.
Sie können Abfrageparameter vom URI mit abrufen
request.query.<name of the parameter>
, die zweitgenannte Lösung warrequest.params.<name of the parameter>
und mit diesem können Sie die Pfadvariablen abrufen.quelle
Es gibt also zwei Möglichkeiten, wie diese "ID" empfangen werden kann: 1) Verwenden von Parametern: Die Code-Parameter sehen ungefähr so aus: Angenommen, wir haben ein Array,
Dann können wir für Parameter so etwas tun:
2) Eine andere Methode ist die Verwendung von Abfrageparametern. Die URL sieht also ungefähr so aus wie "..... \ api \ xyz? id = 1", wobei "? id = 1" der Abfrageteil ist. In diesem Fall können wir so etwas tun:
quelle
quelle
Wenn Sie jemals eine
GET
Anfrage an eineIP
oder eine senden müssenDomain
(andere Antworten haben nicht erwähnt, dass Sie eineport
Variable angeben können), können Sie diese Funktion verwenden:Verpassen Sie nicht, Module oben in Ihrer Datei zu benötigen:
Denken Sie auch daran, dass Sie das
https
Modul für die Kommunikation über gesicherte Domänen und SSL verwenden können. Diese beiden Zeilen würden sich also ändern:quelle
warum nicht mit Servercode gemischt
z.B . php
quelle
Ich benutze MEANJS 0.6.0 mit [email protected], es ist gut
Klient:
Regler:
Dienstleistungen:
Server
Routen
Regler
quelle
-------- Zugriff auf Abfragezeichenfolgendaten -------
Angenommen, dies ist der Link http://webapplog.com/search?term=node.js&page=1
Im Express können Sie also Folgendes verwenden:
req.query.term
req.query.page
oderreq.query
(Die Abfrage wird in einem Objekt abgerufen.)// Beispiel
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Zugriff auf URL-Parameter -------
Angenommen, dies ist der Link http://webapplog.com/node.js/pages/100.
In Express können Sie also Folgendes verwenden:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Beispiel
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
quelle