В чем разница между Path (путевым) и Query (строковым) параметром в REST API?

«В чем разница между Path (путевым) и Query (строковым) параметром в REST API?» — вопрос из категории API тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Как тестировщик API, я четко различаю эти два типа параметров, так как они по-разному влияют на структуру запроса, тестовые сценарии и валидацию ответов.

Path Parameters (Параметры пути)

  • Расположение: Встроены в сам путь URL, обычно обозначаются фигурными скобками {} в шаблоне маршрута.
  • Назначение: Идентифицируют конкретный ресурс или иерархию ресурсов. Они обязательны для маршрутизации запроса к нужному обработчику.
  • Семантика: Часть идентификатора ресурса (URI).
  • Пример для тестирования:
    GET /api/users/{userId}/orders/{orderId}
    GET /api/users/567/orders/8921
    • Что проверяем:
      1. Корректность извлечения userId=567 и orderId=8921 сервером.
      2. Ответ 404 Not Found при передаче несуществующего ID.
      3. Ответ 400 Bad Request при передаче нечислового ID, если endpoint ожидает число.

Query Parameters (Параметры строки запроса)

  • Расположение: Добавляются в конец URL после знака ?, пары ключ=значение разделяются &.
  • Назначение: Осуществляют фильтрацию, сортировку, пагинацию или модификацию запроса к ресурсу(-ам). Они необязательны.
  • Семантика: Параметры операции над ресурсом.
  • Пример для тестирования:
    GET /api/orders?status=shipped&limit=10&sort=-date
    • Что проверяем:
      1. Корректную фильтрацию списка заказов по status='shipped'.
      2. Ограничение вывода 10 записями (limit=10).
      3. Сортировку по убыванию даты (sort=-date).
      4. Поведение при невалидных значениях (например, status=invalid).
      5. Значения по умолчанию при отсутствии параметров.

Сводная таблица для тест-кейсов

Критерий Path Parameter Query Parameter
Обязательность Обязателен для маршрутизации Опционален
Влияние на ресурс Определяет какой ресурс Определяет как представить ресурс(ы)
Типовые тесты Валидация формата, граничные значения, негативные сценарии (несуществующий ID) Комбинаторика параметров, значения по умолчанию, специальные символы (кодирование), пустые значения
Пример в тест-плане GET /products/0 (проверка на несуществующий ID) GET /products?category=&price=abc (проверка обработки пустого и нечислового значения)

Понимание этой разницы критично для составления полного набора тестов: позитивных, негативных и проверки граничных условий как для пути, так и для строки запроса.