Что такое http?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
HTTP: Основы для QA Engineer
HTTP (HyperText Transfer Protocol) — это основной протокол для передачи данных в интернете. Для QA инженера понимание HTTP критически важно при тестировании веб-приложений и API.
Что такое HTTP?
HTTP — это текстовый протокол уровня приложения, используемый для передачи данных между клиентом (браузер, мобильное приложение) и сервером. Он работает на основе модели запрос-ответ: клиент отправляет запрос, сервер обрабатывает и отправляет ответ.
Основные характеристики HTTP
Без сохранения состояния (Stateless)
- Каждый запрос независим
- Сервер не сохраняет информацию о предыдущих запросах
- Для отслеживания состояния используются cookies, session tokens, JWT
Текстовый протокол
- Запрос и ответ передаются в виде текста
- Легко отлаживать и анализировать
- Читаемый формат для человека
Клиент-серверная архитектура
- Клиент инициирует запрос
- Сервер обрабатывает и отправляет ответ
- Клиент не может инициировать подключение сам без запроса
HTTP методы (HTTP Verbs)
GET — получение данных
- Не изменяет данные на сервере
- Параметры передаются в URL
- Безопасный и идемпотентный метод
- Пример:
GET /api/users/123
POST — создание новых данных
- Отправляет данные в теле запроса
- Может изменять состояние на сервере
- Не идемпотентный (каждый запрос может создать новый ресурс)
- Пример:
POST /api/usersс данными пользователя
PUT — полное обновление ресурса
- Заменяет весь ресурс новыми данными
- Требует полное содержимое ресурса
- Идемпотентный
- Пример:
PUT /api/users/123с полными данными
PATCH — частичное обновление ресурса
- Обновляет только переданные поля
- Более эффективен чем PUT для частичных обновлений
- Идемпотентный
- Пример:
PATCH /api/users/123с некоторыми полями
DELETE — удаление ресурса
- Удаляет ресурс на сервере
- Идемпотентный
- Пример:
DELETE /api/users/123
HEAD — как GET, но без тела ответа
- Проверка доступности ресурса
- Получение заголовков без загрузки данных
OPTIONS — получение информации о доступных методах
- Используется для CORS проверок
- Информирует о поддерживаемых методах для ресурса
Структура HTTP запроса
Request Line (строка запроса)
GET /api/users HTTP/1.1
- Метод (GET, POST и т.д.)
- Путь к ресурсу
- Версия протокола (обычно HTTP/1.1 или HTTP/2)
Заголовки (Headers)
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
User-Agent: Mozilla/5.0
- Дополнительная информация о запросе
- Content-Type: тип данных в теле
- Authorization: учётные данные
- User-Agent: информация о клиенте
Тело (Body) — опционально
{"name": "John", "email": "john@example.com"}
- Отправляется с POST, PUT, PATCH
- Обычно JSON, XML или Form data
Структура HTTP ответа
Status Line (строка состояния)
HTTP/1.1 200 OK
- Версия протокола
- Код состояния
- Описание
Заголовки ответа
Content-Type: application/json
Content-Length: 256
Set-Cookie: session_id=abc123
Тело ответа
{"id": 123, "name": "John"}
HTTP Коды состояния (Status Codes)
2xx — Успех
- 200 OK — запрос успешен
- 201 Created — ресурс создан
- 204 No Content — успешно, но нет данных в ответе
3xx — Перенаправление
- 301 Moved Permanently — постоянный редирект
- 302 Found — временный редирект
- 304 Not Modified — кэш актуален
4xx — Ошибка клиента
- 400 Bad Request — неправильный формат запроса
- 401 Unauthorized — требуется аутентификация
- 403 Forbidden — нет доступа
- 404 Not Found — ресурс не найден
- 429 Too Many Requests — превышен лимит запросов
5xx — Ошибка сервера
- 500 Internal Server Error — ошибка на сервере
- 502 Bad Gateway — шлюз недоступен
- 503 Service Unavailable — сервис недоступен
- 504 Gateway Timeout — timeout
HTTPS — Защищённый HTTP
HTTPS = HTTP + SSL/TLS шифрование
- Все данные шифруются при передаче
- Защита от перехвата данных
- Аутентификация сервера через сертификаты
- Обязателен для передачи конфиденциальной информации
Версии HTTP
HTTP/1.1
- Долгое время стандарт
- Keep-alive соединения (переиспользование)
- Проблема с head-of-line blocking
HTTP/2
- Мультиплексирование (несколько запросов в одном соединении)
- Compression заголовков
- Server push
- Лучше производительность
HTTP/3 (QUIC)
- Ещё более быстрый
- UDP вместо TCP
- Быстрое восстановление соединения
Практическое применение в QA
Тестирование API
- Проверка корректных и некорректных HTTP методов
- Валидация кодов состояния
- Проверка заголовков и тела ответа
Тестирование веб-приложений
- Анализ сетевых запросов в браузере (DevTools)
- Проверка запросов при действиях пользователя
- Отслеживание редиректов и cookies
Баг-анализ
- Проверка status code при ошибках
- Анализ заголовков и cookies
- Проверка времени ответа и сетевых задержек
Инструменты для работы с HTTP
- Postman — тестирование API
- Insomnia — альтернатива Postman
- cURL — командная строка для HTTP запросов
- DevTools браузера — анализ запросов и ответов
- Fiddler — прокси для отладки
- Charles Proxy — мониторинг трафика
Понимание HTTP протокола позволяет QA инженеру более эффективно тестировать веб-приложения, находить проблемы с сетевыми запросами, и лучше взаимодействовать с разработчиками при анализе проблем.