Ответ
POST-запрос — это основной метод HTTP для отправки данных на сервер с целью создания или обновления ресурса. Как тестировщик, я разбираю его на компоненты для составления корректных и некорректных тестовых сценариев.
Структура POST-запроса:
- Стартовая строка (Request Line): Содержит метод (
POST), путь к ресурсу (/api/users) и версию протокола (HTTP/1.1). - Заголовки (Headers): Критически важны для интерпретации тела запроса сервером.
Content-Type: Обязательный для POST. Указывает формат тела. Например:application/json— для JSON.application/x-www-form-urlencoded— для данных формы.multipart/form-data— для загрузки файлов.
Content-Length: Размер тела в байтах.Authorization: Для аутентификации.
- Тело запроса (Request Body): Сами отправляемые данные. Формат должен строго соответствовать
Content-Type. - Параметры строки запроса (Query Parameters): Опционально. Добавляются в URL после
?(например,POST /api/log?source=test). Используются для дополнительных инструкций, а не для основных данных.
Пример тестового сценария:
Я тестирую создание заказа через POST /api/orders. Позитивный тест включает валидные заголовки и тело. Негативный тест — отправку тела в формате XML при указанном Content-Type: application/json, чтобы проверить обработку ошибок сервером.
### Пример POST-запроса для создания заказа (формат для REST-клиента)
POST https://api.shop.com/v1/orders
Content-Type: application/json
Authorization: Bearer {{auth_token}}
{
"productId": 789,
"quantity": 2,
"customerNote": "Доставить до 18:00"
}
Ключевое отличие от GET: У GET запроса нет тела, все параметры передаются только в URL. POST предназначен для операций, изменяющих состояние на сервере.