Одним из способов передачи данных в приложение представляет использование параметров строки запроса. Строка запроса (query) - фактически это часть
запрошенного адреса, которая идет после знака вопроса. Например, в запросе http://localhost:3000/about?id=3&name=Tome часть
id=3&name=Tome представляет строку запроса.
Строку запроса образуют параметры. После названия каждого параметра после знака равно (=) идет его значение. Друг от друга параметры отделяются знаком амперсанда. Например, в адресе выше использовалось два параметра: параметр "id" имеет значение "3" и параметр "name" имеет значение "Tom".
В express мы можем получить параметра строки запроса через свойство query объекта request, который передается в функцию обработки запроса. Например:
const express = require("express");
const app = express();
app.get("/", function(_, response){
response.send("<h1>Главная страница</h1>");
});
app.use("/about", function(request, response){
const id = request.query.id;
const userName = request.query.name;
response.send(`<h1>Информация</h1><p>id: ${id}</p><p>name: ${userName}</p>`);
});
app.listen(3000);
С помощью выражения request.query мы можем получить все параметры строки запрос в виде объекта javascript, а с помощью выражения
request.query.название_параметра мы можем обратиться к каждому отдельному параметру.
Подобным образом мы можем передавать массивы данных:
const express = require("express");
const app = express();
app.get("/", function(_, response){
response.send("<h1>Главная страница</h1>");
});
app.use("/about", function(request, response){
const usernames = request.query.name;
let responseText = "<ul>";
for(username of usernames){
responseText += `<li>${username}</li>`;
}
responseText += "</ul>";
response.send(responseText);
});
app.listen(3000);
В данном случае в приложение будет передаваться параметр name, который представляет массив.
Также можно передавать более сложые объекты, которые состоят из множества свойств:
const express = require("express");
const app = express();
app.use("/about", function(request, response){
console.log(request.query);
const id = request.query.user.id;
const name = request.query.user.name;
response.send(`<h3>id: ${id}<br>name: ${name}</h3>`);
});
app.listen(3000);
В данном случае мы получае объект user, который содержит два свойства id и name, например, user: { id: "7", name: "Tom" } .
При передаче в строке запроса свойства объекта помещаются в квадратные скобки: user[id].