434 Stimmen

Wie man ein URL-Parameter in Express erhält?

Ich habe ein Problem damit, den Wert von tagid aus meiner URL zu erhalten: localhost:8888/p?tagid=1234.

Helfen Sie mir, meinen Controller-Code zu korrigieren. Ich kann den Wert von tagid nicht abrufen.

Mein Code sieht wie folgt aus:

app.js:

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

// alle Umgebungen
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 hört auf 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('Sie suchen nach 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'
  });
};

1024voto

maček Punkte 72991

Express 4.x

Um den Wert eines URL-Parameters zu erhalten, verwenden Sie 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

Wenn Sie einen Abfrageparameter ?tagId=5 erhalten möchten, verwenden Sie 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

URL-Parameter

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

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

Abfrageparameter

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

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

23voto

tomahim Punkte 1288

Sie können etwas wie req.param('tagId') tun

23voto

Malatesh Patil Punkte 4027

Wenn Sie den Abfrageparameterwert in der URL erfassen möchten, folgen Sie den unten stehenden Code-Stücken

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

Wenn Sie den URL-Parameter mithilfe der Express-Param-Funktion erfassen möchten

Express-Param-Funktion zum Abrufen eines bestimmten Parameters. Dies wird als Middleware betrachtet und wird vor dem Aufruf der Route ausgeführt.

Dies kann für Validierungen oder zum Abrufen wichtiger Informationen zu einem Element verwendet werden.

Ein Beispiel hierfür wäre:

// Parameter-Middleware, die vor den nächsten Routen ausgeführt wird
app.param('tagid', function(req, res, next, tagid) {

// Überprüfen, ob der Tagid existiert
// Einige Validierungen durchführen
// Etwas zum Tagid hinzufügen
var modified = tagid+ '123';

// name in der Anforderung speichern
req.tagid= modified;

next();
});

// http://localhost:8080/api/tags/98
app.get('/api/tags/:tagid', function(req, res) {
// Der Tagid wurde gefunden und ist in req.tagid verfügbar
res.send('Neue Tag-ID ' + req.tagid+ '!');
});

17voto

ajay saini Punkte 297

Dies funktioniert, wenn Ihre Route so aussieht: localhost:8888/p?tagid=1234

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

Andernfalls verwenden Sie den folgenden Code, wenn Ihre Route so aussieht: localhost:8888/p/1234

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X