Pertanyaan Bagaimana cara mendapatkan GET (query string) variabel dalam Express.js pada Node.js?


Bisakah kita mendapatkan variabel dalam string kueri di Node.js sama seperti kita mendapatkannya $_GET di PHP?

Saya tahu bahwa di Node.js kita bisa mendapatkan URL dalam permintaan. Apakah ada metode untuk mendapatkan parameter string kueri?


845
2017-08-02 13:08


asal


Jawaban:


Ya, Anda dapat mengakses req.url dan builtin url modul untuk url.parse secara manual:

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

Namun, dalam expressjs itu sudah dilakukan untuk Anda dan Anda bisa menggunakannya req.query untuk itu:

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

754
2017-08-02 13:30



Karena Anda telah menyebutkan Express.js di tag Anda, berikut ini adalah jawaban Ekspres-spesifik: gunakan req.query. Misalnya.

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



Di Express, gunakan req.query.

req.params hanya mendapatkan parameter rute, bukan parameter string kueri. Lihat mengekspresikan atau layar dokumentasi:

(req.params) Memeriksa rute params, ex: / user /: id

(req.query) Memeriksa params string kueri, mis:? id = 12 Memeriksa kerangka tubuh yang dikalibrasi

(req.body), ex: id = 12 Untuk memanfaatkan badan permintaan yang di-encode, req.body harus menjadi objek. Ini dapat dilakukan dengan menggunakan middleware _express.bodyParser.

Yang mengatakan, sebagian besar waktu, Anda ingin mendapatkan nilai parameter terlepas dari sumbernya. Dalam hal ini, gunakan req.param('foo').

Nilai parameter akan dikembalikan apakah variabel dalam parameter rute, string kueri, atau badan permintaan yang dienkode.

Catatan samping - jika Anda ingin mendapatkan perpotongan dari ketiga jenis parameter permintaan (mirip dengan PHP $_REQUEST), Anda hanya perlu menggabungkan parameter bersama-- begini cara saya mengaturnya di Sails. Perlu diingat bahwa objek parameter jalur / rute (req.params) memiliki properti larik, jadi urutan penting (meskipun ini dapat berubah dalam Express 4)


407
2018-02-11 18:49



Untuk Express.js yang ingin Anda lakukan req.params:

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

110
2017-08-02 15:38



Saya belajar dari jawaban lain dan memutuskan untuk menggunakan kode ini di seluruh situs saya:

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

Maka Anda bisa menelepon

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

di mana URL untuk mendapatkan seharusnya

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

66
2017-11-26 16:26



Anda harus dapat melakukan sesuatu seperti ini:

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



Ada 2 cara untuk mengirim parameter melalui metode GET

Metode 1: Pendekatan MVC di mana Anda melewati parameter seperti / routename /: paramname
Dalam hal ini Anda dapat menggunakan req.params.paramname untuk mendapatkan nilai parameter. Sebagai contoh, lihat kode di bawah ini di mana saya mengharapkan Id sebagai parameter.
tautan bisa seperti: http://myhost.com/items/23

var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);

Metode 2: Pendekatan Umum: Melewati variabel sebagai string kueri menggunakan '?' operator
Untuk Contoh, lihat kode di bawah di mana saya mengharapkan Id sebagai parameter kueri
tautan bisa seperti: http://myhost.com/items?id=23

var express = require('express');
var app = express();
app.get("/items",function(req,res){
    var id = req.query.id;
    //further operations to perform
});
app.listen(3000);

26
2018-05-26 07:57



UPDATE 4 Mei 2014 

Jawaban lama dipertahankan di sini: https://gist.github.com/stefek99/b10ed037d2a4a323d638


1) Pasang ekspres: npm install express

app.js

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

app.get('/endpoint', function(request, response) {
    var id = request.query.id;
    response.end("I have received the ID: " + id);
});

app.listen(3000);
console.log("node express app started at http://localhost:3000");

2) Jalankan aplikasi: node app.js

3) Kunjungi di browser: http://localhost:3000/endpoint?id=something

Saya telah menerima ID: sesuatu


(Banyak hal telah berubah sejak jawaban saya dan saya percaya itu layak untuk menjaga hal-hal terkini)


22
2017-08-05 17:52