Каково назначение основных методов HTTP-запросов (GET, POST, PUT, PATCH, DELETE)

Ответ

Основные методы HTTP определяют действие, которое клиент хочет выполнить над ресурсом на сервере. Их правильное использование является основой для построения RESTful API.

Ключевые свойства методов:

  • Безопасный (Safe): метод не изменяет состояние ресурса на сервере. К таким методам относятся GET и HEAD.
  • Идемпотентный (Idempotent): многократное повторение одного и того же запроса приводит к тому же результату, что и одиночный запрос. GET, PUT, DELETE являются идемпотентными.

Основные методы:

  • GET

    • Назначение: Запрос на получение ресурса. Данные передаются через URL-параметры.
    • Свойства: Безопасный, идемпотентный.
    • Пример: Получение списка товаров, загрузка веб-страницы.
  • POST

    • Назначение: Создание нового ресурса. Данные передаются в теле запроса.
    • Свойства: Не является идемпотентным (повторный запрос создаст еще один ресурс).
    • Пример: Регистрация пользователя, отправка сообщения в чат.
  • PUT

    • Назначение: Полное обновление (замена) существующего ресурса. Если ресурс не существует, он может быть создан.
    • Свойства: Идемпотентный (повторное обновление теми же данными даст тот же результат).
    • Пример: Обновление профиля пользователя, заменяя все его поля.
  • PATCH

    • Назначение: Частичное обновление существующего ресурса. В теле запроса передаются только изменяемые поля.
    • Свойства: Не является идемпотентным по определению, хотя может быть реализован как таковой.
    • Пример: Изменение только имени пользователя, не затрагивая другие поля.
  • DELETE

    • Назначение: Удаление ресурса.
    • Свойства: Идемпотентный (повторное удаление уже удаленного ресурса вернет тот же статус, например, 404 Not Found).
    • Пример: Удаление статьи или комментария.

Ответ 18+ 🔞

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

Вот смотри, у этих методов есть две главные приметы, как родинки:

  • Безопасный (Safe): Это такой скромняга, который только смотрит, но не трогает. Ничего на сервере не меняет, даже пылинки не сдует. Типа GET и HEAD.
  • Идемпотентный (Idempotent): А это уже похудистичнее. Его можно тыкать сто раз подряд — результат будет один и тот же, как будто ты первый раз нажал. Не накрутит тебе сто одинаковых заказов, не обосрёт лог. Это GET, PUT, DELETE.

А теперь по косточкам, что они из себя представляют:

  • GET

    • Суть: "Дай посмотреть, что у тебя там есть". Лезут в твои шкафы-холодильники через адресную строку.
    • Характер: Тихий, безопасный, идемпотентный. Можно обновлять страницу до посинения — ничего не случится.
    • На практике: "Покажи мне ленту новостей" или "открой главную страницу". Всё, хуле.
  • POST

    • Суть: "Слушай, а давай я тебе тут новую хуйню создам". Суёт данные прямо в тело запроса, как записку в карман.
    • Характер: Опасный, не идемпотентный. Нажмёшь F5 два раза — получишь двух одинаковых пользователей или два заказа, и потом будешь ебаться с отменой. Пиздец, а не метод.
    • На практике: "Зарегистрируй меня, сука" или "отправь это сообщение Васе". Создание, блядь, в чистом виде.
  • PUT

    • Суть: "Вот тебе полный новый набор данных, замени всё, что было, на это. Если ничего не было — создай". Жёстко, без компромиссов.
    • Характер: Идемпотентный мужик. Отправил один раз — профиль обновился. Отправил десять раз с тем же — профиль остался тем же, обновлённым. Красота.
    • На практике: "Вот новый профиль юзера Петрова, всё, что было до этого — в мусорку". Полная замена, ёпта.
  • PATCH

    • Суть: "Братан, не трогай всё остальное, поменяй только вот это одно поле". Точечная работа, ювелирная.
    • Характер: Хитрый. По идее не идемпотентный, потому что можно слать разные изменения. Но если делать с умом, то можно и идемпотентным сделать. Вообще, мартышлюшка метод, с ним надо аккуратнее.
    • На практике: "У пользователя сменился только аватар, обнови только его, не трогай имя и почту".
  • DELETE

    • Суть: "Удали это нахуй". Всё. Точка.
    • Характер: Идемпотентный до мозга костей. Удалил запись — она удалена. Пытаешься удалить её ещё раз — получаешь "не найдено", и так сто раз подряд. Один и тот же результат, ебать его в сраку.
    • На практике: "Сотри этот гребаный комментарий" или "удали аккаунт этого пидораса".

Вот и вся магия. Главное — не путай POST с PUT, а то вместо обновления профиля наклепаешь пользователей, как сука, овердохуища. И помни про идемпотентность, это твой лучший друг, когда сеть глючит и запросы летят по десять раз.