Express에서 URL 매개 변수를 얻는 방법은 무엇입니까?


291

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

13
express에서 /p?tagid=1234tagid를 URL 매개 변수가 아닌 쿼리 문자열 이라고합니다 . URL 매개 변수는입니다 /p/:tagId.
mikemaccana

답변:


706

익스프레스 4.x

URL 매개 변수의 값을 얻으려면 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

쿼리 매개 변수를 얻으려면 req.query?tagId=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

Express 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

어떤 Express 버전을 사용하고 있습니까? 방금 이것을 테스트 express-3.4.4했으며 정상적으로 작동합니다.
maček

사용하는 것을 기억 /p/5당신이 최고 솔루션을 사용하거나하는 경우 /p?tagId=5는 하단의 솔루션을 사용하는 경우.
maček

최고의 솔루션 (/ p / 5)은 나에게 완벽하게 작동합니다 ..하지만 맨 아래의 / p? tagId = 5는 "tagId가 정의되지 않았습니다"라는 오류를 표시합니다.
user2834795

2
감사합니다. 많은 macek.you 내 시간을 절약하십시오. 내 실수 였지만, 나는 당신에 따라 모든 것을했지만 URL에서는 "tagId"보다는 "tagid"를 사용하고있었습니다.
user2834795

11
req.param()되어 사용되지 않는 : Use either req.params, req.body or req.query, as applicable.이름 경로 "매개 변수"(예를 들어 /p/:tagId) 사용 req.params. 쿼리 문자열 (예 :)을 /p?tagId=5사용하십시오 req.query.
Nateowami

20

당신은 같은 것을 할 수 있습니다 req.param('tagId')


1
이 메소드는 더 이상 사용되지 않습니다. 대신 req.query를 사용하십시오.
alextc

4
@alextc req.queryreq.params너무 다르기 때문에 대체 req.param('x')req.params.xreq.query 가 아닙니다.
Al-Mothafar 2019

12

URL에서 검색어 매개 변수 값을 가져 오려면 아래 코드를 따르십시오.

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

Express param 기능을 사용하여 URL 매개 변수를 가져 오려면

특정 매개 변수를 얻는 Express 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+ '!');
});

5

경로가 다음과 같은 경우 작동합니다. localhost:8888/p?tagid=1234

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

그렇지 않으면 경로가 다음과 같은 경우 다음 코드를 사용하십시오. localhost:8888/p/1234

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

2
일반적으로 사람들은 이와 같은 URL을 만들지 않습니다/p/:tagid=1234
Ankur Loriya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.