Ответ
Технически — да, но это нарушает семантику HTTP и REST-архитектуру.
- POST — универсальный метод для операций, которые не вписываются в другие методы. Он не идемпотентен (повторный запрос может иметь другой эффект).
- DELETE — семантически правильный метод для удаления ресурса. Он идемпотентен (повторные запросы к одному URI дают тот же результат).
Пример (не рекомендуется):
POST /api/users/123 HTTP/1.1
Content-Type: application/json
{"action": "delete"}
Правильный подход (RESTful):
DELETE /api/users/123 HTTP/1.1
Когда POST для удаления может встречаться (как исключение):
- Ограничения инфраструктуры (например, старые прокси-серверы или брандмауэры блокируют метод DELETE).
- Операция не является простым удалением, а представляет собой сложное действие (например, "архивировать и пометить как неактивное"), которое лучше описывается RPC-стилем.
Вывод: Всегда предпочитайте метод DELETE для удаления ресурсов. Используйте POST только при непреодолимых технических ограничениях или для сложных нестандартных операций.
Ответ 18+ 🔞
Да ты послушай, что за дичь иногда в проектах творят! Ну, чисто технически-то — да, можно, блядь. POST-ом и слона удалить, если очень захотеть. Но это ж, ёпта, как молотком гвозди забивать — можно, но для этого есть, сука, молоток, а не утюг!
Вот смотри, в чём тут, блядь, собака зарыта:
- POST — это как универсальная отвёртка-швейцарский нож. Запихни туда в тело запроса
{"action": "delete"}— и ресурс твой сгинет. Но метод-то не идемпотентный, ёбана! Это значит, если ты его по ошибке два раза шарахнешь, результат может быть пиздец какой непредсказуемый. Удалится два раза? А хуй его знает! Может, второй раз ошибку кинет, а может, и нет. Волнение ебать. - DELETE — это уже, блядь, специализированный кувалдометод. Создан специально, чтобы ебашить ресурсы. Ткнул раз — удалил. Ткнул сто раз — всё равно удалён. Идемпотентный, стабильный, предсказуемый. Все понимают, что происходит. Красота!
Вот как делать НЕ НАДО (хотя и работает, пизда):
POST /api/users/123 HTTP/1.1
Content-Type: application/json
{"action": "delete"}
А вот как делать ПРАВИЛЬНО, по-человечески:
DELETE /api/users/123 HTTP/1.1
Но жизнь, она, блядь, сложная штука. Иногда POST для удаления проскакивает, и на то есть причины, от которых волосы дыбом:
- Какая-нибудь древняя инфраструктура, прокси-сервер времён царя Гороха, который от метода DELETE просто, сука, в анабиоз впадает. Или брандмауэр, настроенный каким-то пидарасом шерстяным, который думает, что DELETE — это хакерская атака.
- Операция не просто "удалить", а какое-то ебанистическое действо: "архивировать, пометить флагом, отправить уведомление админу и списать в утиль". Это уже не чистый REST, а какой-то RPC-уёбищный стиль. Ну, бывает.
Вывод, блядь, простой, как три копейки: если ты не связан по рукам и ногам каким-то ебучим легаси-кодом или идиотскими ограничениями — ВСЕГДА юзай DELETE для удаления. Это как поставить дверь на петли, а не приклеить её скотчем. POST оставь для всего остального, что не влезает в аккуратные рамки. А то потом разгребать этот пиздец будут, и доверия к тебе будет, блядь, ноль.