Ответ
Нет, GET-запрос не предназначен и не пригоден для отправки файлов.
Причины:
- Семантика: GET — идиоматический метод для получения ресурсов, а не для их загрузки.
- Ограничения размера: Данные в GET передаются в URL (как query-параметры). Максимальная длина URL ограничена браузерами (обычно ~2000 символов) и серверами.
- Отсутствие кодирования для бинарных данных: URL не предназначен для передачи бинарных данных (как изображения или PDF).
Как правильно отправлять файлы:
Используйте метод POST (или PUT) с типом контента multipart/form-data.
Пример теста на Python с requests:
import requests
url = 'https://api.example.com/upload'
files = {'document': open('report.pdf', 'rb')}
# Дополнительные поля формы
data = {'description': 'Quarterly report'}
response = requests.post(url, files=files, data=data)
assert response.status_code == 200, f'Upload failed: {response.text}'
print('File uploaded successfully')
Что проверяет QA:
- Корректный Content-Type в заголовках запроса (
multipart/form-data; boundary=...). - Обработка больших файлов (таймауты, прогресс).
- Валидация типа и размера файла на стороне сервера.
- Корректное извлечение файла и дополнительных полей формы.