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?
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"]
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);
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)
Für Express.js möchten Sie tun req.params
:
app.get('/user/:id', function(req, res) {
res.send('user' + req.params.id);
});
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
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")
})
//get query¶ms 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"}
})