Что такое HTTP-метод DELETE?

Ответ

DELETE — это идемпотентный HTTP-метод для удаления ресурса, идентифицированного по URI.

Основные характеристики:

  • Идемпотентность: Повторные идентичные запросы дают тот же результат (ресурс остаётся удалённым).
  • Без тела: Запрос, как правило, не имеет тела (body).
  • Ответы: Успешный ответ может быть 200 OK (с телом), 204 No Content (без тела) или 202 Accepted (удаление принято в обработку).
  • Безопасность: Не гарантирует физическое удаление данных; часто реализуется как "мягкое удаление" (soft delete).

Пример запроса:

DELETE /api/users/123 HTTP/1.1
Host: example.com
Authorization: Bearer <token>

Важно: Сервер должен проверять права клиента (авторизацию) перед выполнением операции, возвращая 403 Forbidden или 401 Unauthorized при их отсутствии.

Ответ 18+ 🔞

Давай разжую этот сухой технический текст, чтобы он не лежал в голове мёртвым грузом, а жил там, как сосед-алкаш в подъезде — нагло и понятно.

Представь, что у тебя есть шкаф. В нём висит старый, заношенный свитер твоей бывшей, от которого пахнет тоской и разочарованием. Метод DELETE — это когда ты берёшь этот свитер, выносишь на помойку и говоришь: «Всё, блядь, свободен».

Что тут главное, а?

  • Идемпотентность, ёпта: Это умное слово значит, что если ты десять раз подряд нажмёшь кнопку «выкинуть нахуй», результат не изменится. Свитер уже в мусорке, он не вернётся, и второй такой же из шкафа не исчезнет. Один раз удалил — и похуй.
  • Без лишних слов: Ты же не пишешь заявление на удаление свитера в трёх экземплярах? Ты просто берёшь и кидаешь. Запрос DELETE такой же — без долгих предисловий в теле.
  • Ответ может быть разный: Сервер может тебе ответить по-разному. «Окей, выкинул, вот тебе последняя фотка свитера на память» (200 OK). Или просто «Сделано, отъебись» (204 No Content). А может и так: «Ладно, принял заявку, выкину как освобожусь» (202 Accepted). Главное — результат один.
  • Безопасность — это иллюзия: Тут важный момент, в рот меня чих-пых! Часто «удаление» — это просто пометка «удалён». Свитер не сжигают, а засовывают на дальнюю полку в кладовку (soft delete). На случай, если новая бывшая окажется ещё хуже и старую захочется достать и понюхать. Настоящего, физического удаления может и не быть.

Как это выглядит в деле? Ты говоришь серверу чётко и ясно:

DELETE /api/users/123 HTTP/1.1
Host: example.com
Authorization: Bearer <token>

Перевод на человеческий: «Эй, сервак! Видишь юзера под номером 123? Удали его нахуй. Вот мой пропуск (токен), я имею право».

И ВАЖНЕЙШЕЕ ПРАВИЛО, БЛЯДЬ: Сервер — не дурак. Он сначала проверит, а есть ли у тебя вообще право эту хуйню удалять. Нет токена или прав? Получи 401 (ты кто такой?) или 403 (ты кто такой, чтобы мне указывать?) и иди лесом. А то сейчас каждый второй захочет удалить базу данных, ёперный театр.

Короче, DELETE — это не «спрятать в карман», а именно «выкинуть в окно». Но помни, что окно может выходить не на улицу, а в соседнюю комнату.