Node.js पर Express.js में GET(क्वेरी स्ट्रिंग) चर कैसे प्राप्त करें?




query-string (12)

क्या हम Node.js में क्वेरी स्ट्रिंग में चर प्राप्त कर सकते हैं जैसे कि हम उन्हें PHP में $_GET में प्राप्त करते हैं?

मुझे पता है कि नोड.जेएस में हम अनुरोध में यूआरएल प्राप्त कर सकते हैं। क्वेरी स्ट्रिंग पैरामीटर प्राप्त करने के लिए कोई तरीका है?


आप उपयोग कर सकते हैं

request.query.<varible-name>;

एक्सप्रेस में, req.query उपयोग req.query

req.params केवल रूट पैरामीटर प्राप्त करता है, क्वेरी स्ट्रिंग पैरामीटर नहीं। express या sails दस्तावेज देखें:

(req.params) मार्ग पैराम की जांच करता है, पूर्व: / उपयोगकर्ता / आईडी

(req.query) क्वेरी स्ट्रिंग पैराम्स की जांच करता है, ex:? id = 12 urlencoded body params की जांच करता है

(req.body), ex: id = 12 urlencoded अनुरोध निकायों का उपयोग करने के लिए, req.body एक वस्तु होना चाहिए। यह _express.bodyParser मिडलवेयर का उपयोग कर किया जा सकता है।

उस ने कहा, ज्यादातर समय, आप इसके स्रोत के बावजूद पैरामीटर का मूल्य प्राप्त करना चाहते हैं। उस स्थिति में, req.param('foo')

पैरामीटर का मान वापस कर दिया जाएगा कि चर मार्ग पैरामीटर, क्वेरी स्ट्रिंग, या एन्कोडेड अनुरोध निकाय में था या नहीं।

साइड नोट- यदि आप सभी तीन प्रकार के अनुरोध पैरामीटर (PHP के $_REQUEST के समान) के चौराहे को प्राप्त करने का लक्ष्य रखते हैं, तो आपको केवल पैरामीटर को एक साथ मर्ज करने की आवश्यकता है - यहां मैं इसे सेल में कैसे सेट अप करता हूं। ध्यान रखें कि पथ / मार्ग पैरामीटर ऑब्जेक्ट ( req.params ) में सरणी गुण हैं, इसलिए ऑर्डर मायने रखता है (हालांकि यह एक्सप्रेस 4 में बदल सकता है )


हां आप req.url और req.url url मॉड्यूल को url.parse मैन्युअल रूप से एक्सेस कर सकते हैं:

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

हालांकि, एक्सप्रेसज में यह आपके लिए पहले से ही किया जा चुका है और आप req.query लिए req.query उपयोग कर सकते हैं:

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

व्हाइटक्वार्क ने अच्छी तरह से जवाब दिया। लेकिन Node.js और Express.js के वर्तमान संस्करणों के साथ इसे एक और पंक्ति की आवश्यकता है। 'Http की आवश्यकता है' (दूसरी पंक्ति) को जोड़ना सुनिश्चित करें। मैंने यहां एक पूर्ण उदाहरण पोस्ट किया है जो दिखाता है कि यह कॉल कैसे काम कर सकती है। एक बार चलने के बाद, अपने ब्राउज़र में http://localhost:8080/?name=abel&fruit=apple टाइप करें, और आपको कोड के आधार पर एक अच्छी प्रतिक्रिया मिल जाएगी।

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

app.configure(function(){
    app.set('port', 8080);
});

app.get('/', function(req, res){
  res.writeHead(200, {'content-type': 'text/plain'});
  res.write('name: ' + req.query.name + '\n');
  res.write('fruit: ' + req.query.fruit + '\n');
  res.write('query: ' + req.query + '\n');
  queryStuff = JSON.stringify(req.query);
  res.end('That\'s all folks'  + '\n' + queryStuff);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
})

मैंने अन्य उत्तरों से सीखा और मेरी साइट पर इस कोड का उपयोग करने का फैसला किया:

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

तो आप बस कॉल कर सकते हैं

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

जहां प्राप्त करने के लिए यूआरएल होना चाहिए

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

यह इतना आसान है:

उदाहरण यूआरएल:

http://.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

आप क्वेरी स्ट्रिंग के सभी मानों का उपयोग करके प्रिंट कर सकते हैं:

console.log("All query strings: " + JSON.stringify(req.query));

उत्पादन

सभी क्वेरी स्ट्रिंग्स: {"id": "3", "activatekey": "$ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjz fUrqLrgS3zXJVfVRK"}

विशिष्ट मुद्रित करने के लिए:

console.log("activatekey: " + req.query.activatekey);

उत्पादन

activatekey: $ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjzfUrqLrgS3zXJVfVRK


जीईटी विधि के माध्यम से पैरामीटर पास करने के 2 तरीके हैं

विधि 1: एमवीसी दृष्टिकोण जहां आप पैरामीटर जैसे / routename /: paramname पास करते हैं
इस मामले में आप पैरामीटर मान प्राप्त करने के लिए req.params.paramname का उपयोग कर सकते हैं उदाहरण के लिए नीचे कोड देखें जहां मैं एक param के रूप में आईडी की अपेक्षा कर रहा हूं
लिंक इस तरह हो सकता है: 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);

विधि 2: सामान्य दृष्टिकोण: '?' का उपयोग कर क्वेरी स्ट्रिंग के रूप में चर को पास करना ऑपरेटर
उदाहरण के लिए नीचे कोड देखें जहां मैं आईडी को क्वेरी पैरामीटर के रूप में उम्मीद कर रहा हूं
लिंक इस तरह हो सकता है: 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);

बंदरगाह 9080 पर एक छोटा नोड.जेएस HTTP सर्वर सुन रहा है, डेटा प्राप्त करने या पोस्ट डेटा को पार्स करना और प्रतिक्रिया के हिस्से के रूप में इसे ग्राहक को वापस भेजना है:

var sys = require('sys'),
url = require('url'),
http = require('http'),
qs = require('querystring');

var server = http.createServer(

    function (request, response) {

        if (request.method == 'POST') {
                var body = '';
                request.on('data', function (data) {
                    body += data;
                });
                request.on('end',function() {

                    var POST =  qs.parse(body);
                    //console.log(POST);
                    response.writeHead( 200 );
                    response.write( JSON.stringify( POST ) );
                    response.end();
                });
        }
        else if(request.method == 'GET') {

            var url_parts = url.parse(request.url,true);
            //console.log(url_parts.query);
            response.writeHead( 200 );
            response.write( JSON.stringify( url_parts.query ) );
            response.end();
        }
    }
);

server.listen(9080);

इसे parse.js रूप में सहेजें, और "node parse.js" दर्ज करके इसे कंसोल पर चलाएं।


Express.js के लिए आप req.params करना चाहते हैं:

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

यदि आप ईएस 6 और एक्सप्रेस का उपयोग कर रहे हैं, तो इस दृष्टिकोण को आजमाएं:

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

app.get('/', function(req, res){
   const {id, since, fields, anotherField}  = req.query;
});

app.listen(3000);

आप एक्सप्रेस ^ 4.15.4 के साथ उपयोग कर सकते हैं:

var express = require('express'),
    router = express.Router();
outer.get('/', function (req, res, next) {
    console.log(req.query);
});

उम्मीद है कि यह मदद करता है ... चीयर्स,


चूंकि आपने अपने टैग में Express.js का उल्लेख किया है, यहां एक एक्सप्रेस-विशिष्ट उत्तर है: req.query का उपयोग करें । उदाहरण के लिए

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

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

app.listen(3000);




express