Ответ
Да, GET-запросы в HTTP используются для передачи данных через query-параметры в URL. Параметры добавляются после знака ? в формате ключ=значение, а пары разделяются символом &.
Пример на Node.js с Express:
// Серверная часть (Express.js)
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
// Данные доступны в req.query
const { userId, filter } = req.query;
console.log(`Запрос данных для пользователя: ${userId}, фильтр: ${filter}`);
// ... логика выборки данных ...
res.json({ success: true, query: req.query });
});
app.listen(3000);
Клиентский запрос (используя node-fetch или браузер):
// URL будет: http://localhost:3000/api/data?userId=123&filter=active
fetch('http://localhost:3000/api/data?userId=123&filter=active')
.then(response => response.json())
.then(data => console.log(data));
Важные ограничения и соображения:
- Длина URL: Ограничена (обычно ~2048 символов, зависит от сервера и клиента).
- Видимость: Данные открыто видны в адресной строке, истории браузера и логах сервера. Не подходит для паролей, токенов или любой конфиденциальной информации.
- Кэширование: GET-запросы могут кэшироваться браузерами и промежуточными прокси.
- Семантика: Согласно стандартам HTTP, GET предназначен для получения (fetching) данных, а не для операций с побочными эффектами (изменение состояния на сервере).
Для передачи больших объемов данных или конфиденциальной информации используйте POST, PUT или PATCH, передавая данные в теле запроса (body).