Как грамотно тестировать DELETE-запросы в API
Краткий ответ
Тестирование DELETE-запроса предполагает проверку успешного удаления ресурса, корректного HTTP-кода ответа (обычно 200 или 204), а также подтверждение отсутствия удалённого объекта при последующих запросах. Важно дополнительно проверить поведение при попытках удалить несуществующие или защищённые ресурсы.
Развёрнуто
Краткий ответ
Тестирование DELETE-запроса включает проверку, что ресурс был удалён, сервер вернул правильный HTTP-статус (200 OK или 204 No Content), и последующие GET-запросы к этому ресурсу возвращают ошибку или пустой результат. Также необходимо проверить обработку ошибок при удалении несуществующих объектов.
Как это работает
DELETE-запрос в REST API предназначен для удаления определённого ресурса. При успешном выполнении сервер обычно возвращает код 204 No Content (означающий успешное удаление без дополнительного тела ответа) или 200 OK с подтверждающей информацией.
Тестирование включает:
- Проверку статуса ответа
- Валидацию, что ресурс действительно удалён (например, последующий GET возвращает 404)
- Обработку ошибок, когда ресурс отсутствует или доступ к удалению запрещён
| Сценарий | Ожидаемый HTTP-статус | Описание |
|---|---|---|
| Успешное удаление | 204 No Content / 200 OK | Ресурс удалён, тело ответа пустое или с подтверждением |
| Попытка удалить отсутствующий ресурс | 404 Not Found | Ресурс не найден, ошибка удаления |
| Недостаточно прав | 403 Forbidden | Пользователь не имеет права удалить ресурс |
Пример
DELETE /api/items/123 HTTP/1.1
Host: example.com
Authorization: Bearer token123
HTTP/1.1 204 No Content
В этом примере отправляется запрос на удаление ресурса с ID 123. Сервер отвечает статусом 204, что означает успешное удаление без тела ответа.
Что важно знать на собеседовании
- DELETE-запросы должны быть идемпотентными — повторный запрос к тому же ресурсу не должен приводить к ошибкам.
- Правильная проверка статуса ответа: 200, 204 — успешное удаление; 404 — ресурс не найден; 403 — отказ в доступе.
- Нужно проверять, что после удаления ресурс недоступен через GET.
- Важно тестировать негативные сценарии: удаление несуществующих или защищённых ресурсов.
- В ряде случаев сервер может возвращать тело ответа с подтверждением успешного удаления.
Тема: HTTP, REST и API | Уровень: middle