Ответ
GET-запросы используются для получения (чтения) данных с сервера. Согласно спецификации HTTP, они должны быть идемпотентными и безопасными, то есть не изменять состояние сервера.
Основные сценарии использования в тестировании и разработке:
- Получение ресурсов: Загрузка страницы, получение списка пользователей (
GET /api/users), деталей товара (GET /api/products/123). - Фильтрация, сортировка, пагинация: Использование query-параметров для уточнения запроса.
GET /api/orders?status=shipped&sort=-date&page=2&limit=20 - Кеширование: GET-запросы могут и должны кешироваться на стороне браузера, прокси-серверов или CDN, что критически важно для производительности.
Ограничения и важные для тестирования аспекты:
- Длина URL: Ограничена (обычно ~2048-4096 символов), что нужно проверять при передаче длинных параметров.
- Видимость данных: Параметры передаются в URL, поэтому не подходят для конфиденциальных данных (пароли, токены).
- Семантика: Нельзя использовать GET для операций, изменяющих данные (создание, обновление, удаление). Для этого существуют POST, PUT, PATCH, DELETE.
Пример теста на Python (pytest + requests):
import requests
def test_get_request_returns_valid_data_and_status():
# Тестируем получение списка с пагинацией
response = requests.get('https://api.example.com/users', params={'page': 1, 'limit': 10})
assert response.status_code == 200
data = response.json()
assert isinstance(data, list)
assert len(data) <= 10 # Проверяем лимит
assert 'id' in data[0] # Проверяем структуру элемента