node.js - query - node js router parameters




Как получить переменные GET(строки запроса) в Express.js на Node.js? (14)

В express.js вы можете получить это довольно легко, все, что вам нужно сделать в функции вашего контроллера:

    app.get('/user/:id', function(req, res) {
      res.send('user' + req.params.id);    
    });

И это все, если вы используете синтаксис es6.

Оплаченный {id} означает Object destructuring , новую функцию es6.

Можем ли мы получить переменные в строке запроса в Node.js так же, как мы получаем их в $_GET в PHP?

Я знаю, что в Node.js мы можем получить URL-адрес в запросе. Есть ли способ получить параметры строки запроса?


В Express используйте req.query .

req.params получает только параметры маршрута, а не параметры строки запроса. См. Документацию express или sails :

(req.params) Проверяет параметры маршрута, например: / user /: id

(req.query) Проверяет параметры строки запроса, ex:? id = 12 Проверяет параметры urlencoded body

(req.body), ex: id = 12 Чтобы использовать urlencoded тела запросов, req.body должен быть объектом. Это можно сделать, используя промежуточное ПО _express.bodyParser.

Тем не менее, большую часть времени вы хотите получить значение параметра независимо от его источника. В этом случае используйте req.param('foo') .

Значение параметра будет возвращено независимо от того, была ли переменная в параметрах маршрута, строке запроса или закодированном теле запроса.

Обратите внимание: если вы хотите получить пересечение всех трех параметров запроса (аналогично PHP $_REQUEST ), вам просто нужно объединить параметры вместе - вот как я настроил его в Sails . Имейте в виду, что объект параметров маршрута / маршрута ( req.params ) имеет свойства массива, поэтому порядок имеет значение (хотя это может измениться в Express 4 )


Вы можете использовать req.params с ExpressJS

router.get('/recipe/:id', function (req, res, next) {
        database.sendQuery("SELECT * FROM recipe WHERE id = " + req.params.id , function (err, results) {
            if (err) {
                console.log(err)
            } else {
                res.json(results)
            }
        })
    });

Вы можете использовать с выражением ^ 4.15.4:

request.query.<varible-name>;

Надеюсь это поможет.


Для Express.js вы хотите сделать req.params :

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

Если вы используете ES6 и Express , попробуйте этот подход деструктуризации :

const {id, since, fields, anotherField}  = request.query;

В контексте:

const express = require('express');
const app = express();

app.get('/', function(req, res){
   const {id, since, fields, anotherField}  = req.query;
});

app.listen(3000);

Вы также можете использовать значения по умолчанию с destructuring

// sample request for testing
const req = {
  query: {
    id: '123',
    fields: ['a', 'b', 'c']
  }
}

const {
  id,
  since = new Date().toString(),
  fields = ['x'],
  anotherField = 'default'
} = req.query;

console.log(id, since, fields, anotherField)


Поскольку вы упомянули Express.js в своих тегах, вот ответ на конкретный экспресс: используйте req.query . Например

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

Существует два способа передачи параметров с помощью метода GET

Метод 1: подход MVC, в котором вы передаете параметры, такие как / routeename /: paramname
В этом случае вы можете использовать req.params.paramname, чтобы получить значение параметра. Пример. Пример см. Ниже код, в котором я ожидаю Id как параметр
ссылка может быть такой: http://myhost.com/items/23

var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);

Метод 2: Общий подход: Передача переменных в качестве строки запроса с использованием '?' оператор
Для примера см. Ниже код, где я ожидаю Id как параметр запроса
ссылка может быть такой: http://myhost.com/items?id=23

var express = require('express');
var app = express();
app.get("/items",function(req,res){
    var id = req.query.id;
    //further operations to perform
});
app.listen(3000);

Уайткварк ответила красиво. Но с текущими версиями Node.js и Express.js требуется еще одна строка. Обязательно добавьте «require http» (вторая строка). Я опубликовал здесь более полный пример, показывающий, как этот вызов может работать. После запуска введите http://localhost:8080/?name=abel&fruit=apple в вашем браузере, и вы получите http://localhost:8080/?name=abel&fruit=apple ответ на основе кода.

var express = require('express');
var http = require('http');
var app = express();

app.configure(function(){
    app.set('port', 8080);
});

app.get('/', function(req, res){
  res.writeHead(200, {'content-type': 'text/plain'});
  res.write('name: ' + req.query.name + '\n');
  res.write('fruit: ' + req.query.fruit + '\n');
  res.write('query: ' + req.query + '\n');
  queryStuff = JSON.stringify(req.query);
  res.end('That\'s all folks'  + '\n' + queryStuff);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
})

Это так просто:

Пример URL:

http://.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

Вы можете распечатать все значения строки запроса, используя:

console.log("All query strings: " + JSON.stringify(req.query));

Выход

Все строки запроса: {"id": "3", "activatekey": "$ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjz fUrqLrgS3zXJVfVRK"}

Для печати:

console.log("activatekey: " + req.query.activatekey);

Выход

activatekey: $ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjzfUrqLrgS3zXJVfVRK


Я узнал из других ответов и решил использовать этот код на моем сайте:

var query = require('url').parse(req.url,true).query;

Тогда вы можете просто позвонить

var id = query.id;
var option = query.option;

где URL для get должен быть

/path/filename?id=123&option=456

вы можете использовать модуль url для сбора параметров с помощью url.parse

var url = require('url');
var url_data = url.parse(request.url, true);
var query = url_data.query;

В expressjs это делается,

var id = req.query.id;

Например:

var express = require('express');
var app = express();

app.get('/login', function (req, res, next) {
    console.log(req.query);
    console.log(req.query.id); //Give parameter id
});

//get query&params in express

//etc. example.com/user/000000?sex=female

app.get('/user/:id', function(req, res) {

  const query = req.query;// query = {sex:"female"}

  const params = req.params; //params = {id:"000000"}

})

app.get('/', (req, res, next) => {
   const {id} = req.query;
   // rest of your code here...
})

Вы можете использовать это, или вы можете попробовать body-parser для синтаксического анализа специального элемента из параметров запроса.





express