Ответ
Как тестировщик API, я четко различаю эти два типа параметров, так как они по-разному влияют на структуру запроса, тестовые сценарии и валидацию ответов.
Path Parameters (Параметры пути)
- Расположение: Встроены в сам путь URL, обычно обозначаются фигурными скобками
{}в шаблоне маршрута. - Назначение: Идентифицируют конкретный ресурс или иерархию ресурсов. Они обязательны для маршрутизации запроса к нужному обработчику.
- Семантика: Часть идентификатора ресурса (URI).
- Пример для тестирования:
GET /api/users/{userId}/orders/{orderId} GET /api/users/567/orders/8921- Что проверяем:
- Корректность извлечения
userId=567иorderId=8921сервером. - Ответ
404 Not Foundпри передаче несуществующего ID. - Ответ
400 Bad Requestпри передаче нечислового ID, если endpoint ожидает число.
- Корректность извлечения
- Что проверяем:
Query Parameters (Параметры строки запроса)
- Расположение: Добавляются в конец URL после знака
?, парыключ=значениеразделяются&. - Назначение: Осуществляют фильтрацию, сортировку, пагинацию или модификацию запроса к ресурсу(-ам). Они необязательны.
- Семантика: Параметры операции над ресурсом.
- Пример для тестирования:
GET /api/orders?status=shipped&limit=10&sort=-date- Что проверяем:
- Корректную фильтрацию списка заказов по
status='shipped'. - Ограничение вывода 10 записями (
limit=10). - Сортировку по убыванию даты (
sort=-date). - Поведение при невалидных значениях (например,
status=invalid). - Значения по умолчанию при отсутствии параметров.
- Корректную фильтрацию списка заказов по
- Что проверяем:
Сводная таблица для тест-кейсов
| Критерий | Path Parameter | Query Parameter |
|---|---|---|
| Обязательность | Обязателен для маршрутизации | Опционален |
| Влияние на ресурс | Определяет какой ресурс | Определяет как представить ресурс(ы) |
| Типовые тесты | Валидация формата, граничные значения, негативные сценарии (несуществующий ID) | Комбинаторика параметров, значения по умолчанию, специальные символы (кодирование), пустые значения |
| Пример в тест-плане | GET /products/0 (проверка на несуществующий ID) |
GET /products?category=&price=abc (проверка обработки пустого и нечислового значения) |
Понимание этой разницы критично для составления полного набора тестов: позитивных, негативных и проверки граничных условий как для пути, так и для строки запроса.