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

«Каково назначение основных методов HTTP-запросов (GET, POST, PUT, PATCH, DELETE)» — вопрос из категории Сети, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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

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

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

  • GET

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

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

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

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

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