एक्सप्रेस में URL पैरामीटर कैसे प्राप्त करें?


291

मैं tagidअपने URL से मान प्राप्त करने पर एक समस्या का सामना कर रहा हूं localhost:8888/p?tagid=1234:।

मेरे कंट्रोलर कोड को सही करने में मेरी मदद करें। मैं tagidमूल्य प्राप्त करने में सक्षम नहीं हूं ।

मेरा कोड इस प्रकार है:

app.js:

var express = require('express'),
  http = require('http'),
  path = require('path');
var app = express();
var controller = require('./controller')({
  app: app
});

// all environments
app.configure(function() {
  app.set('port', process.env.PORT || 8888);
  app.use(express.json());
  app.use(express.urlencoded());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
  app.set('view engine', 'jade');
  app.set('views', __dirname + '/views');
  app.use(app.router);
  app.get('/', function(req, res) {
    res.render('index');
  });
});
http.createServer(app).listen(app.get('port'), function() {
  console.log('Express server listening on port ' + app.get('port'));
});

Controller/index.js:

function controller(params) {
  var app = params.app;
  //var query_string = request.query.query_string;

  app.get('/p?tagId=/', function(request, response) {
    // userId is a parameter in the url request
    response.writeHead(200); // return 200 HTTP OK status
    response.end('You are looking for tagId' + request.route.query.tagId);
  });
}

module.exports = controller;

routes/index.js:

require('./controllers');
/*
 * GET home page.
 */

exports.index = function(req, res) {
  res.render('index', {
    title: 'Express'
  });
};

13
व्यक्त में /p?tagid=1234, टैगिड को एक क्वेरी स्ट्रिंग कहा जाता है , न कि एक URL पैरामीटर। एक URL पैरामीटर होगा /p/:tagId
मिकमेकाना

जवाबों:


706

एक्सप्रेस 4.x

URL पैरामर का मान प्राप्त करने के लिए, req.params का उपयोग करें

app.get('/p/:tagId', function(req, res) {
  res.send("tagId is set to " + req.params.tagId);
});

// GET /p/5
// tagId is set to 5

यदि आप एक क्वेरी पैरामीटर प्राप्त करना चाहते हैं ?tagId=5, तो req.query का उपयोग करें

app.get('/p', function(req, res) {
  res.send("tagId is set to " + req.query.tagId);
});

// GET /p?tagId=5
// tagId is set to 5

एक्सप्रेस 3.x

URL पैरामीटर

app.get('/p/:tagId', function(req, res) {
  res.send("tagId is set to " + req.param("tagId"));
});

// GET /p/5
// tagId is set to 5

क्वेरी पैरामीटर

app.get('/p', function(req, res) {
  res.send("tagId is set to " + req.query("tagId"));
});

// GET /p?tagId=5
// tagId is set to 5

आप किस संस्करण का उपयोग कर रहे हैं? मैंने अभी इस पर परीक्षण किया है express-3.4.4और यह ठीक काम करता है।
maček

/p/5यदि आप शीर्ष समाधान का उपयोग कर रहे हैं, या /p?tagId=5यदि आप नीचे वाले समाधान का उपयोग कर रहे हैं, तो उपयोग करना याद रखें ।
maček

शीर्ष समाधान (/ p / 5) मेरे लिए एकदम सही काम करता है..लेकिन नीचे एक / p? TagId = 5 मुझे त्रुटि देता है "tagId अपरिभाषित करने के लिए तैयार है"
user2834795

2
बहुत बहुत धन्यवाद macek.you मेरा समय बचाओ। यह मेरी गलती थी, मैंने आपके अनुसार सभी किया लेकिन url में मैं "tagId" के बजाय "tagid" का उपयोग कर रहा था।
user2834795

11
req.param()है पदावनत : Use either req.params, req.body or req.query, as applicable.नामित मार्ग "पैरामीटर" (उदाहरण के लिए /p/:tagId) का उपयोग करें req.params। क्वेरी स्ट्रिंग्स (जैसे /p?tagId=5) के उपयोग के लिए req.query
नटोमामी

20

आप कुछ ऐसा कर सकते हैं req.param('tagId')


1
इस विधि को हटा दिया गया है। इसके बजाय req.query का उपयोग करें।
23

4
@alextc req.queryऔर req.paramsइसलिए अलग अलग बातें है, के लिए प्रतिस्थापन req.param('x')है req.params.xreq.query नहीं।
अल-मोतफेर

12

यदि आप URL में क्वेरी पैरामीटर मान को हथियाना चाहते हैं, तो नीचे दिए गए कोड टुकड़ों का पालन करें

//url.localhost:8888/p?tagid=1234
req.query.tagid
OR
req.param.tagid

यदि आप एक्सप्रेस पैरामीटर फ़ंक्शन का उपयोग करके URL पैरामीटर हड़पना चाहते हैं

एक्सप्रेस पैरामीटर एक विशिष्ट पैरामीटर को हथियाने के लिए कार्य करता है। इसे मिडलवेयर माना जाता है और रूट को कॉल करने से पहले चलेगा।

यह सत्यापन के लिए या आइटम के बारे में महत्वपूर्ण जानकारी हथियाने के लिए इस्तेमाल किया जा सकता है।

इसके लिए एक उदाहरण होगा:

// parameter middleware that will run before the next routes
app.param('tagid', function(req, res, next, tagid) {

// check if the tagid exists
// do some validations
// add something to the tagid
var modified = tagid+ '123';

// save name to the request
req.tagid= modified;

next();
});

// http://localhost:8080/api/tags/98
app.get('/api/tags/:tagid', function(req, res) {
// the tagid was found and is available in req.tagid
res.send('New tag id ' + req.tagid+ '!');
});

5

यदि आपका मार्ग इस तरह दिखता है तो यह काम करेगा: localhost:8888/p?tagid=1234

var tagId = req.query.tagid;
console.log(tagId); // outputs: 1234
console.log(req.query.tagid); // outputs: 1234

यदि आपका मार्ग इस तरह दिखता है तो निम्नलिखित कोड का उपयोग करें: localhost:8888/p/1234

var tagId = req.params.tagid;
console.log(tagId); // outputs: 1234
console.log(req.params.tagid); // outputs: 1234

2
आम तौर पर लोग इस तरह से url नहीं बनाते हैं/p/:tagid=1234
अंकुर लोरिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.