Что такое query-параметры (параметры строки запроса) в HTTP?

«Что такое query-параметры (параметры строки запроса) в HTTP?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Query-параметры (параметры строки запроса) — это пары «ключ=значение», добавляемые в URL после знака ? для передачи данных серверу в HTTP-запросе. Несколько параметров разделяются символом &. Они используются для фильтрации, сортировки, пагинации и других операций без изменения пути ресурса.

Пример URL с query-параметрами:

https://api.example.com/users?name=John&age=30&sort=name_asc

Здесь:

  • name=John — фильтрация по имени.
  • age=30 — фильтрация по возрасту.
  • sort=name_asc — сортировка по имени по возрастанию.

Особенности с точки зрения тестирования:

  1. Видимость: Параметры видны в адресной строке и логах, поэтому нельзя использовать для передачи чувствительных данных (паролей, токенов).
  2. Ограничения: Существуют ограничения по длине URL (зависит от браузера и сервера).
  3. Кодирование: Специальные символы (пробел, кириллица) должны быть закодированы (например, пробел → %20).

Пример тестирования в автотестах (Python + requests):

import requests

# Тест на корректную фильтрацию
params = {"role": "admin", "active": "true"}
response = requests.get("https://api.example.com/users", params=params)

assert response.status_code == 200
data = response.json()
# Проверяем, что все возвращенные пользователи имеют роль 'admin' и статус 'active'
for user in data['users']:
    assert user['role'] == 'admin'
    assert user['is_active'] is True

# Тест на обработку некорректных параметров
response = requests.get("https://api.example.com/users", params={"size": "invalid_string"})
# Ожидаем 400 Bad Request или корректную обработку ошибки по спецификации API
assert response.status_code == 400

При тестировании API важно проверять:

  • Валидацию параметров (типы данных, обязательные/опциональные).
  • Поведение при отсутствии параметров.
  • Сочетание нескольких параметров.
  • Кодирование и экранирование специальных символов.