Ответ
PUT, POST и DELETE — это HTTP-методы для операций с ресурсами (CRUD).
| Метод | Назначение | Идемпотентность | Безопасность |
|---|---|---|---|
| PUT | Создание или полное обновление ресурса по известному URI. | Да | Нет |
| POST | Создание нового ресурса или выполнение сложных действий. | Нет | Нет |
| DELETE | Удаление ресурса по указанному URI. | Да | Нет |
Ключевые различия:
- PUT идемпотентен: многократный вызов с одними данными даёт тот же результат (ресурс создаётся или обновляется один раз).
- POST не идемпотентен: каждый вызов может создать новый ресурс.
- PUT требует полного представления ресурса, POST может принимать частичные данные.
Примеры запросов:
# PUT — обновить или создать пользователя с id=1
PUT /api/users/1 HTTP/1.1
Content-Type: application/json
{"name": "Alice", "email": "alice@example.com"}
# POST — создать нового пользователя (id присвоит сервер)
POST /api/users HTTP/1.1
Content-Type: application/json
{"name": "Bob", "email": "bob@example.com"}
# DELETE — удалить пользователя с id=1
DELETE /api/users/1 HTTP/1.1
Практическое правило: Используйте POST для создания, PUT для обновления (если клиент знает полный URI), DELETE для удаления.
Ответ 18+ 🔞
Давай разжую эту тему про HTTP-методы, а то у некоторых в голове каша, будто они вчера родились, блядь.
Смотри, есть три главных бандита в этом деле: PUT, POST и DELETE. Это как инструменты для операций CRUD — создание, чтение, обновление, удаление. Просто «чтение» (GET) мы тут не трогаем, он тихий и спокойный.
Вот тебе таблица, чтобы сразу врубиться:
| Метод | Зачем нужен | Идемпотентный? | Безопасный? |
|---|---|---|---|
| PUT | Создать или нахуй полностью переписать ресурс по известному адресу (URI). | Да | Нет |
| POST | Создать новый ресурс или выполнить какую-то ебанистику, сложное действие. | Нет | Нет |
| DELETE | Удалить ресурс по указанному адресу. Нахуй, короче. | Да | Нет |
А теперь главное, чтобы не облажаться:
- PUT — идемпотентный, ёпта. Это значит, что если ты десять раз подряд шлёшь один и тот же запрос, результат будет как от одного раза. Ресурс создастся или обновится один раз, а не десять. Не как с POST, который может насоздавать клонов, как сумасшедший учёный.
- POST — не идемпотентный. Каждый раз — новый вызов, новый ресурс. Как чих — не остановишь.
- PUT обычно требует, чтобы ты отправил полное представление ресурса. Не половинку, а целиком. POST может принять и кусочек, а остальное сервер сам додумает, хитрая жопа.
Примеры, чтобы вообще всё стало ясно, как божий день:
# PUT — «Слушай, сервер, на адрес /users/1 положи вот этого пользователя Алису.
# Если там что-то было — затри, если пусто — создай. Всё просто, как три копейки.»
PUT /api/users/1 HTTP/1.1
Content-Type: application/json
{"name": "Alice", "email": "alice@example.com"}
# POST — «Босс, вот тебе данные какого-то Боба. Сделай с ними что надо,
# создай нового пользователя где считаешь нужным и дай ему свой ID. Я в дела не лезу.»
POST /api/users HTTP/1.1
Content-Type: application/json
{"name": "Bob", "email": "bob@example.com"}
# DELETE — «Эй, админ, пользователя под номером 1 — нахуй отсюда. Вычеркни, удали, сотри.»
DELETE /api/users/1 HTTP/1.1
Практическое правило, которое спасёт тебя от позора: Используй POST, когда создаёшь новый ресурс и не паришься насчёт его итогового адреса. Используй PUT, когда обновляешь существующий ресурс, и ты точно знаешь, где он лежит (его полный URI). Используй DELETE, когда нужно что-то удалить. Всё логично, ебать мои старые костыли.
Вот и вся магия. Не усложняй, а то доверия к твоему коду будет ноль ебать.