Для чего используется HTTP-метод PUT?

Ответ

PUT — это HTTP-метод для полного обновления или создания ресурса по известному URI.

Основное назначение:

  • Замена ресурса целиком новыми данными, предоставленными в теле запроса.
  • Если ресурс по указанному URI существует — он обновляется. Если не существует — может быть создан (зависит от реализации API).

Ключевые особенности:

  • Идемпотентность: Многократная отправка одного и того же PUT-запроса дает тот же результат, что и однократная.
  • Требует передачи всех полей ресурса (в отличие от PATCH, который обновляет частично).
  • Клиент определяет URI ресурса.

Пример запроса (обновление пользователя):

PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "active": true
}

Типичные коды ответа:

  • 200 OK или 204 No Content — при успешном обновлении.
  • 201 Created — если ресурс был создан.
  • 404 Not Found — если ресурс не существует и сервер не поддерживает создание через PUT.

Ответ 18+ 🔞

А, ну вот, смотри, опять про эти ваши HTTP-методы. PUT, говоришь? Ну, это как если ты пришёл в свою квартиру, блядь, и решил: "А нехуй тут всё старое, нахуй выкину, заново обставлю!"

Короче, суть в чём:

  • Полная замена, ёпта. Ты берёшь и отправляешь на сервер все данные по ресурсу. Не "ой, поменяй только имя", а "на, вот тебе новый, целый, свежесобранный объект, старый — в топку".
  • Если по этому адресу (URI) уже что-то лежало — оно накрывается медным тазом и заменяется твоим новым. Если пусто — ну, может, создадут, если сервер не мудак и разрешает.

Важные фишки:

  • Идемпотентный, блядь. Это умное слово значит, что ты можешь этот запрос десять раз отправить — результат будет как от одного. Не накопится хуйни.
  • Всё или ничего. Забыл одно поле передать? Сервер может решить, что это поле теперь должно быть пустым. В отличие от PATCH, который как хитрая жопа — подкрасит только то, что надо.
  • Адрес-то ты указываешь сам. Говоришь серверу: "Слушай сюда, положи это вот сюда, на место /api/users/123".

Пример, как это выглядит (обновляем какого-то бедолагу под номером 123):

PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "active": true
}

И что тебе в ответ прилетит:

  • 200 OK или 204 No Content — если всё прошло гладко, обновил, молодец, иди нахуй.
  • 201 Created — о, смотри-ка, а там ничего не было, так мы твой объект создали! Ебать ты строитель.
  • 404 Not Found — если по этому адресу нихуя нет, и сервер — пидарас шерстяной — не хочет через PUT ничего создавать. Иди лесом.