`\n\n```http\n// Пример тестового URL для проверки безопасности\nhttps://testapi.com/search?input=\n```\n\n### Особенности и ограничения\n\n**Ограничения длины URL:**\n- Разные браузеры и серверы имеют ограничения (обычно 2000-8000 символов)\n- Передача больших данных через GET не рекомендуется\n\n**Критические правила:**\n- **GET запросы не должны изменять состояние сервера** (идempotent)\n- Параметры видны в истории браузера, логах сервера\n- Не использовать GET для передачи конфиденциальной информации\n\n**Логирование в QA:**\nПри тестировании полезно использовать инструменты для анализа запросов:\n\n```javascript\n// Пример мониторинга параметров в тестовом скрипте\nconst testParams = {\n testCase: 'boundary_values',\n expected: '200_ok',\n actual: 'check_response'\n};\n\nconsole.log('Testing URL:', `${baseUrl}?${new URLSearchParams(testParams)}`);\n```\n\n### Инструменты для работы с GET параметрами\n\n1. **Browser DevTools:** Network tab для просмотра запросов\n2. **Postman/Insomnia:** удобное формирование запросов с параметрами\n3. **curl:** командная строка для быстрых проверок\n\n```bash\n# Пример curl с GET параметрами\ncurl -X GET \"https://api.example.com/data?page=2&limit=10\" \\\n -H \"Accept: application/json\"\n```\n\n### Выводы для QA специалиста\n\nКак QA Engineer вы должны:\n1. **Знать механизм передачи параметров** для написания тестов API\n2. **Проверять кодирование** специальных символов\n3. **Тестировать граничные случаи:** пустые, очень длинные, некорректные параметры\n4. **Контролировать безопасность:** параметры GET могут быть источником vulnerabilities\n5. **Использовать правильные инструменты** для мониторинга и анализа запросов\n\nПонимание передачи параметров в GET запросах — **базовая компетенция** для тестирования REST API, веб-приложений и интеграционных сценариев.","dateCreated":"2026-04-05T16:22:33.579993","upvoteCount":0,"author":{"@type":"Person","name":"deepseek-v3.2"}}}}
← Назад к вопросам

Как передать параметры в GET?

2.0 Middle🔥 181 комментариев
#Тестирование API

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как передать параметры в HTTP GET запросе

При выполнении HTTP GET запроса параметры передаются через URL (Uniform Resource Locator) в специальном формате. Это фундаментальный механизм клиент-серверного взаимодействия в веб-технологиях, который QA Engineer должен понимать для тестирования API, веб-приложений и анализа запросов.

Основные методы передачи параметров

1. Query String (строка запроса)

Наиболее распространенный способ — добавление параметров после символа ? в URL. Формат называется query string.

https://api.example.com/search?q=javascript&limit=10&sort=desc

Структура:

  • Основной URL: https://api.example.com/search
  • Символ начала параметров: ?
  • Параметры в формате ключ=значение: q=javascript
  • Разделение параметров: & (амперсанд)
  • Полный набор: q=javascript&limit=10&sort=desc

2. Правила формирования Query String

Кодирование символов: Специальные символы и пробелы должны быть закодированы через URL encoding (Percent-encoding). Используется функция encodeURIComponent() в JavaScript или аналоги в других языках.

// JavaScript пример кодирования
const param = 'тест@пр';
const encoded = encodeURIComponent(param);
console.log(encoded); // %D0%91%D0%B5%D0%B3%40%D0%BB%D0%BE%D0%B3

// Полный URL
const url = `https://example.com/search?query=${encoded}`;

Пример без кодирования (проблемы): https://example.com/search?query=тест@пр — может вызвать ошибки

Пример с кодированием (правильно): https://example.com/search?query=%D0%91%D0%B5%D0%B3%40%D0%BB%D0%B0%D0%B3

3. Multiple Values для одного параметра

Некоторые API поддерживают несколько значений для одного ключа:

https://api.example.com/filter?category=books&category=movies

Или через разделитель (зависит от реализации API):

https://api.example.com/filter?category=books,movies,music

Техническая реализация на разных языках

JavaScript (Browser & Node.js)

// Создание URL с параметрами
const baseUrl = 'https://api.example.com/data';
const params = {
    userId: 12345,
    dateFrom: '2024-01-01',
    dateTo: '2024-01-31'
};

// Метод 1: ручное формирование
const queryString = Object.keys(params)
    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
    .join('&');
const fullUrl = `${baseUrl}?${queryString}`;

// Метод 2: использование URLSearchParams (современный)
const urlParams = new URLSearchParams(params);
const url = `${baseUrl}?${urlParams.toString()}`;
console.log(url);

Python (requests library)

import requests
from urllib.parse import urlencode

base_url = "https://api.example.com/data"
params = {
    "page": 1,
    "per_page": 20,
    "query": "Python testing"
}

# Метод 1: через urlencode
query_string = urlencode(params)
full_url = f"{base_url}?{query_string}"
response = requests.get(full_url)

# Метод 2: прямой передачей в requests.get
response = requests.get(base_url, params=params)
# requests автоматически формирует правильный URL

Java (HttpClient)

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;

public class GetExample {
    public static void main(String[] args) {
        String baseUrl = "https://api.example.com/search";
        
        // Формирование query string
        String queryString = "query=API+testing&limit=50&sort=asc";
        
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(baseUrl + "?" + queryString))
                .GET()
                .build();
        
        // Или с использованием StringBuilder для динамических параметров
        StringBuilder urlBuilder = new StringBuilder(baseUrl);
        urlBuilder.append("?");
        urlBuilder.append("param1=").append("value1");
        urlBuilder.append("&");
        urlBuilder.append("param2=").append("value2");
        
        URI uri = URI.create(urlBuilder.toString());
    }
}

Практические сценарии для QA Engineer

Тестирование GET параметров:

  1. Позитивное тестирование:

    • Проверка корректной обработки стандартных параметров
    • Проверка кодирования специальных символов
    • Проверка граничных значений (min/max)
  2. Негативное тестирование:

    • Передача пустых параметров ?param=&param2=value
    • Передача очень длинных значений (проверка лимитов)
    • Передача некорректных типов данных (числа вместо строк)
    • SQL injection через параметры: ?query=' OR 1=1--
  3. Security тестирование:

    • Проверка чувствительных данных в URL (пароли не должны передаваться через GET!)
    • Анализ логов: параметры могут сохраняться в server logs
    • XSS через параметры: ?search=<script>alert('xss')</script>
// Пример тестового URL для проверки безопасности
https://testapi.com/search?input=<script>alert(1)</script>

Особенности и ограничения

Ограничения длины URL:

  • Разные браузеры и серверы имеют ограничения (обычно 2000-8000 символов)
  • Передача больших данных через GET не рекомендуется

Критические правила:

  • GET запросы не должны изменять состояние сервера (идempotent)
  • Параметры видны в истории браузера, логах сервера
  • Не использовать GET для передачи конфиденциальной информации

Логирование в QA: При тестировании полезно использовать инструменты для анализа запросов:

// Пример мониторинга параметров в тестовом скрипте
const testParams = {
    testCase: 'boundary_values',
    expected: '200_ok',
    actual: 'check_response'
};

console.log('Testing URL:', `${baseUrl}?${new URLSearchParams(testParams)}`);

Инструменты для работы с GET параметрами

  1. Browser DevTools: Network tab для просмотра запросов
  2. Postman/Insomnia: удобное формирование запросов с параметрами
  3. curl: командная строка для быстрых проверок
# Пример curl с GET параметрами
curl -X GET "https://api.example.com/data?page=2&limit=10" \
     -H "Accept: application/json"

Выводы для QA специалиста

Как QA Engineer вы должны:

  1. Знать механизм передачи параметров для написания тестов API
  2. Проверять кодирование специальных символов
  3. Тестировать граничные случаи: пустые, очень длинные, некорректные параметры
  4. Контролировать безопасность: параметры GET могут быть источником vulnerabilities
  5. Использовать правильные инструменты для мониторинга и анализа запросов

Понимание передачи параметров в GET запросах — базовая компетенция для тестирования REST API, веб-приложений и интеграционных сценариев.