16

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

18

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

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

5 ответ(ов)

1

В Express.js для получения параметров из URL вы можете использовать req.params. Вот пример кода:

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

В этом примере, когда вы делаете GET-запрос к пути /user/123, ответ будет 'user 123'. Параметр :id в URL будет доступен через req.params.id.

0

Для получения параметров запроса и параметров маршрута в Express можно использовать req.query для доступа к запросам и req.params для получения параметров URL. Рассмотрим пример:

// Получаем query-строку и параметры в Express

// Пример запроса: 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"}

  // Здесь вы можете использовать переменные query и params по вашему усмотрению
  console.log(query); // Выведет: { sex: 'female' }
  console.log(params); // Выведет: { id: '000000' }

  // Отправляем ответ клиенту
  res.send({ query, params });
});

Таким образом, req.query содержит параметры запроса, а req.params содержит параметры маршрута. В примере выше, если пользователь перейдет по URL example.com/user/000000?sex=female, то query будет равно { sex: "female" }, а params будет равно { id: "000000" }.

0

Я почитал другие ответы и решил использовать следующий код на своем сайте:

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
0

Если вы используете 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);

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

// пример запроса для тестирования
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);

В этом примере, если since, fields и anotherField не были переданы в query, то им будут присвоены значения по умолчанию.

0

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

Метод 1:
Подход MVC, где параметры передаются в формате /имя_маршрута/:имя_параметра.

В этом случае вы можете использовать req.params.имя_параметра для получения значения параметра. Например, смотрите код ниже, где я ожидаю 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;
    // дальнейшие операции
});
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;
    // дальнейшие операции
});
app.listen(3000);

Таким образом, вы можете выбирать любой из предложенных методов в зависимости от ваших потребностей.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь