Wie erhalte ich einen URL-Parameter in Express?

Lesezeit: 4 Minuten

Wie erhalte ich einen URL Parameter in
Benutzer2834795

Ich stehe vor einem Problem beim Abrufen des Werts von tagid von meiner URL: localhost:8888/p?tagid=1234.

Helfen Sie mir, meinen Controller-Code zu korrigieren. Ich bin nicht in der Lage, die zu bekommen tagid Wert.

Mein Code ist wie folgt:

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("https://stackoverflow.com/", 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'
  });
};

  • Ausdrücklich, /p?tagid=1234tagid heißt a Abfragezeichenfolge, kein URL-Parameter. Ein URL-Parameter wäre /p/:tagId.

    – Mikemaccana

    12. Dezember 14 um 10:40 Uhr


1643907306 504 Wie erhalte ich einen URL Parameter in
maček

Express 4.x

Um den Wert eines URL-Parameters abzurufen, verwenden Sie erf.param

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 erhalten möchten ?tagId=5dann benutze erf.Abfrage

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

  • Welche Express-Version verwendest du? Ich habe das gerade getestet express-3.4.4 und es funktioniert gut.

    – maček

    20. November 13 um 7:20 Uhr


  • Denken Sie daran, zu verwenden /p/5 wenn Sie die obere Lösung verwenden, oder /p?tagId=5 wenn Sie die untere Lösung verwenden.

    – maček

    20. November 13 um 7:23 Uhr


  • Die obere Lösung (/p/5) funktioniert perfekt für mich, aber die untere /p?tagId=5 gibt mir den Fehler “tagId is set to undefined”

    – Benutzer2834795

    20. November 13 um 7:24 Uhr


  • Vielen Dank, macek. Sie sparen meine Zeit. Es war mein Fehler, ich habe alles nach Ihren Wünschen gemacht, aber in der URL habe ich “tagid” anstelle von “tagId” verwendet.

    – Benutzer2834795

    20. November 13 um 7:38 Uhr

  • req.param() ist veraltet: Use either req.params, req.body or req.query, as applicable. Für Named Route „Parameter“ (zB /p/:tagId) benutzen req.params. Für Abfragezeichenfolgen (z /p?tagId=5) benutzen req.query.

    – Nateowami

    19. Juni 15 um 08:18 Uhr

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

  • Diese Methode ist veraltet. Verwenden Sie stattdessen req.query.

    – alextc

    15. Oktober 18 um 23:59 Uhr

  • @alextc req.query und req.params So sind verschiedene Dinge, der Ersatz für req.param('x') ist req.params.x keine Abfrage erforderlich.

    – Al-Mothafar

    5. Februar 19 um 12:40 Uhr

Wenn Sie den Abfrageparameterwert in der URL abrufen möchten, folgen Sie den folgenden Codeteilen

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

Wenn Sie den URL-Parameter mit der Express-Param-Funktion abrufen möchten

Express-Param-Funktion zum Abrufen eines bestimmten Parameters. Dies wird als Middleware betrachtet und ausgeführt, bevor die Route aufgerufen wird.

Dies kann für Validierungen oder zum Abrufen wichtiger Informationen über Artikel verwendet werden.

Ein Beispiel hierfür wäre:

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

1643907306 403 Wie erhalte ich einen URL Parameter in
ajay saini

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

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

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

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

.

757760cookie-checkWie erhalte ich einen URL-Parameter in Express?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy