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




query-string (10)

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

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

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

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


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

request.query.<varible-name>;

आपको ऐसा कुछ करने में सक्षम होना चाहिए:

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")
})

एक्सप्रेस में, 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 में बदल सकता है )


जीईटी विधि के माध्यम से पैरामीटर पास करने के 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" दर्ज करके इसे कंसोल पर चलाएं।


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

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

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

app.listen(3000);

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

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

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


हां आप 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"]

अद्यतन 4 मई 2014

पुराना उत्तर यहां संरक्षित है: https://gist.github.com/stefek99/b10ed037d2a4a323d638

1) एक्सप्रेस स्थापित करें: 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) ऐप चलाएं: node app.js

3) ब्राउज़र में जाएं: http://localhost:3000/endpoint?id=something

मुझे आईडी मिली है: कुछ

(मेरे जवाब के बाद से कई चीजें बदल गई हैं और मेरा मानना ​​है कि चीजों को अद्यतित रखने के लायक है)







express