Frage Wie bekomme ich GET (Query String) Variablen in Express.js auf Node.js?


Können wir die Variablen in der Abfragezeichenfolge in Node.js genau so erhalten, wie wir sie bekommen haben? $_GET in PHP?

Ich weiß, dass wir in Node.js die URL in der Anfrage bekommen können. Gibt es eine Methode zum Abrufen der Abfragezeichenfolgenparameter?


845
2017-08-02 13:08


Ursprung


Antworten:


Ja, Sie können darauf zugreifen req.url und der eingebaute url Modul zu url.parse es manuell:

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

Aber in Expressjs ist es schon für Sie getan und Sie können einfach verwenden req.query dafür:

var id = req.query.id; // $_GET["id"]

754
2017-08-02 13:30



Da Sie Express.js in Ihren Tags erwähnt haben, finden Sie hier eine Express-spezifische Antwort: Verwenden Sie req.query. Z.B.

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

1456
2017-08-02 14:00



In Express verwenden req.query.

req.params Ruft nur die Routenparameter und nicht die Abfragezeichenfolgenparameter ab. Siehe die ausdrücken oder Segel Dokumentation:

(req.params) Prüft Routenparameter, zB: / user /: id

(req.query) Überprüft Abfragezeichenfolgeparameter, zB:? id = 12 Prüft urlencodierte Körperparameter

(req.body), ex: id = 12 Um urlencodierte Anforderungskörper zu verwenden, sollte req.body ein Objekt sein. Dies kann mithilfe der Middleware _express.bodyParser erfolgen.

Das heißt, die meiste Zeit möchten Sie den Wert eines Parameters unabhängig von seiner Quelle erhalten. In diesem Fall verwenden Sie req.param('foo').

Der Wert des Parameters wird zurückgegeben, unabhängig davon, ob die Variable in den Routenparametern, der Abfragezeichenfolge oder dem codierten Anforderungshauptteil enthalten war.

Randnotiz - wenn Sie versuchen, die Schnittmenge aller drei Arten von Anfrageparametern zu erhalten (ähnlich denen von PHP) $_REQUEST), müssen Sie nur die Parameter zusammenführen - so wie ich Richte es in Sails ein. Beachten Sie, dass das Pfad / Route-Parameter-Objekt (req.params) hat Array - Eigenschaften, so dass die Reihenfolge wichtig ist (obwohl dies kann sich in Express 4 ändern)


407
2018-02-11 18:49



Für Express.js möchten Sie tun req.params:

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

110
2017-08-02 15:38



Ich habe von den anderen Antworten gelernt und beschlossen, diesen Code auf meiner Website zu verwenden:

var query = require('url').parse(req.url,true).query;

Dann kannst du einfach anrufen

var id = query.id;
var option = query.option;

wo die URL für get sein sollte

/path/filename?id=123&option=456

66
2017-11-26 16:26



Sie sollten in der Lage sein, so etwas zu tun:

var http = require('http');
var url  = require('url');

http.createServer(function(req,res){
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;

    console.log(query); //{Object}

    res.end("End")
})

32
2017-08-02 13:44



//get query&params in express

//etc. example.com/user/000000?sex=female

app.get('/user/:id', function(req, res) {

  const query = req.query;// query = {sex:"female"}

  const params = req.params; //params = {id:"000000"}

})

29
2018-02-15 02:35