web-dev-qa-db-fra.com

Comment obtenir un paramètre d'URL dans Express?

Je suis confronté à un problème d'obtention de la valeur de tagid à partir de mon URL: localhost:8888/p?tagid=1234.

Aidez-moi à corriger mon code de contrôleur. Je ne parviens pas à obtenir la valeur tagid.

Mon code est le suivant:

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'
  });
};
237
user2834795

Express 4.x

Pour obtenir la valeur d'un paramètre d'URL, utilisez 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

Si vous voulez obtenir un paramètre de requête ?tagId=5, utilisez 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

Express 3.x

Paramètre d'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

Paramètre de requête

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

// GET /p?tagId=5
// tagId is set to 5
585
maček

Vous pouvez faire quelque chose comme req.param('tagId')

18
tomahim

Si vous voulez récupérer la valeur du paramètre de requête dans l'URL, suivez les codes ci-dessous

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

Si vous voulez saisir le paramètre d'URL à l'aide de la fonction Express param

Express fonction param pour saisir un paramètre spécifique. Ceci est considéré comme un middleware et s'exécutera avant l'appel de la route.

Ceci peut être utilisé pour des validations ou pour saisir des informations importantes sur un élément.

Un exemple pour cela serait:

// 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+ '!');
});
6
Malatesh Patil

Cela fonctionnera si votre itinéraire ressemble à ceci: localhost:8888/p?tagid=1234

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

Sinon, utilisez le code suivant si votre itinéraire ressemble à ceci: localhost:8888/p/1234

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