Как получить параметр url-адреса в экспресс?
я столкнулся с проблемой получения значения 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'
});
};
4 ответа:
Экспресс-4.x
чтобы получить значение параметра URL, используйте req.параметры
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.запрос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
Если вы хотите захватить значение параметра запроса в URL, выполните следующие части кода
//url.localhost:8888/p?tagid=1234 req.query.tagid OR req.param.tagid
Если вы хотите захватить параметр URL с помощью функции Express param
Экспресс-функция param для захвата определенного параметра. Это считается промежуточным программным обеспечением и будет выполняться до вызова маршрута.
Это может быть использовано для проверки или получения важной информации о товаре.
пример для этого было бы:
// 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+ '!'); });
это будет работать, если ваш маршрут выглядит так: localhost:8888/p?tagid=1234
var tagId = req.query.tagid; console.log(tagId);// 1234 console.log(req.query.tagid);// 1234 OR
это будет работать, если ваш маршрут выглядит так:localhost:8888/p/: tagid=1234
var tagId = req.params.tagid; console.log(tagId); //1234 console.log(req.params.tagid); //1234