Ответ
Основные методы 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, а то вместо обновления профиля наклепаешь пользователей, как сука, овердохуища. И помни про идемпотентность, это твой лучший друг, когда сеть глючит и запросы летят по десять раз.