Estou enfrentando um problema em obter o valor tagid
do meu URL: localhost:8888/p?tagid=1234
.
Ajude-me a corrigir o código do meu controlador. Eu não sou capaz de obter o tagid
valor.
Meu código é o seguinte:
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'
});
};
javascript
node.js
express
url-parameters
query-parameters
user2834795
fonte
fonte
/p?tagid=1234
tagid é chamado de string de consulta , não um parâmetro de URL. Um parâmetro de URL seria/p/:tagId
.Respostas:
Express 4.x
Para obter o valor de um parâmetro de URL, use req.params
Se você deseja obter um parâmetro de consulta
?tagId=5
, use req.queryExpress 3.x
Parâmetro de URL
Parâmetro de consulta
fonte
express-3.4.4
e funciona bem./p/5
se de usar se você estiver usando a solução superior ou/p?tagId=5
se estiver usando a solução inferior.req.param()
está obsoleto :Use either req.params, req.body or req.query, as applicable.
Para rota nomeada "parâmetros" (por exemplo/p/:tagId
), usereq.params
. Para cadeias de consulta (por exemplo/p?tagId=5
), usereq.query
.Você pode fazer algo como
req.param('tagId')
fonte
req.query
ereq.params
coisas tão diferentes, a substituição para nãoreq.param('x')
éreq.params.x
req.query.Se você deseja pegar o valor do parâmetro de consulta no URL, siga as partes de código abaixo
Se você deseja pegar o parâmetro URL usando a função Express param
Expresse a função param para pegar um parâmetro específico. Isso é considerado middleware e será executado antes que a rota seja chamada.
Isso pode ser usado para validações ou para obter informações importantes sobre o item.
Um exemplo para isso seria:
fonte
Isso funcionará se sua rota estiver assim:
localhost:8888/p?tagid=1234
Caso contrário, use o seguinte código se sua rota estiver assim:
localhost:8888/p/1234
fonte
/p/:tagid=1234